Skip to main content
Glama
geopera-mcp
by geo-pera

geopera-mcp

The official Model Context Protocol server for the Geopera geospatial data platform. It exposes Geopera operations as MCP tools so an AI agent (Claude Desktop, Claude Code, or your own MCP client) can discover imagery, place and read back orders, run analytics, and more — with the same auth, scopes, and provenance as any other Geopera client.

Each tool is named after its operation id (e.g. orders.archive.place) and proxies the call to POST /v1/op/{operation_id}. The server imports nothing from the backend; it is a standalone client of the same typed surface the Python/TypeScript SDKs and CLI consume.

Install

pip install geopera-mcp

This installs the geopera-mcp console command, which speaks the stdio transport that MCP clients attach to. Requires Python 3.11+.

Related MCP server: @terranode-co/mcp-server

Run

The server is configured through environment variables. At minimum:

export GEOPERA_API_URL="https://api.geopera.com"
export GEOPERA_API_TOKEN="gpra_..."   # a Geopera API key, or a session token
geopera-mcp

geopera-mcp runs over stdio by default — your MCP client launches it as a subprocess. Set MCP_TRANSPORT=http to serve the streamable-HTTP transport instead (for a hosted deployment).

Wire it into an MCP client

Add a geopera entry under mcpServers. For Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "geopera": {
      "command": "geopera-mcp",
      "env": {
        "GEOPERA_API_URL": "https://api.geopera.com",
        "GEOPERA_API_TOKEN": "gpra_your_api_key"
      }
    }
  }
}

Restart the client and the Geopera tools appear. The agent's reach is exactly the scopes on the token — it can do nothing the token could not do directly.

Environment variables

Variable

Purpose

GEOPERA_API_URL

Geopera API base URL. Default https://api.geopera.com.

GEOPERA_API_TOKEN

A gpra_ API key or a session token, sent upstream as Authorization: Bearer.

MCP_TRANSPORT

stdio (default) or http.

PORT

Port for the http transport.

Documentation

Full docs: docs.geopera.com/api-reference/sdks/mcp.

License

MIT

Available Tools

188 tools
alerts.acknowledge_eventMark an alert event acknowledged (org-scoped).C

Mark an alert event acknowledged (org-scoped).

Inputs: event_id (required), x-api-key. Returns: alert_event

alerts.create_ruleCreate an alert rule for the caller's organization.D

Create an alert rule for the caller's organization.

Inputs: comparison (required), expression (required), name (required), threshold (required), +9 more. Returns: alert_rule

alerts.delete_ruleDelete an alert rule (org-scoped).C
Destructive

Delete an alert rule (org-scoped).

Inputs: rule_id (required), x-api-key. Returns: deleted

alerts.events.listList the caller's organization's alert events (org-scoped, triggered_at desc).C
Read-only

List the caller's organization's alert events (org-scoped, triggered_at desc).

Inputs: x-api-key, acknowledged, limit, offset, +1 more.

alerts.rule.getGet a single alert rule by id (org-scoped; 404 cross-org).C
Read-only

Get a single alert rule by id (org-scoped; 404 cross-org).

Inputs: rule_id (required), x-api-key.

alerts.rules.listList the caller's organization's alert rules (org-scoped).C
Read-only

List the caller's organization's alert rules (org-scoped).

Inputs: x-api-key, active, collection_id.

alerts.test_ruleTest-evaluate an alert rule against an item without persisting.C
Read-only

Test-evaluate an alert rule against an item without persisting.

Inputs: item_id (required), rule_id (required), x-api-key. Returns: comparison, computed_value, expression, item_id, +2 more

alerts.update_ruleUpdate an alert rule (org-scoped).C

Update an alert rule (org-scoped).

Inputs: rule_id (required), x-api-key, active, asset_key, +11 more. Returns: alert_rule

analytics.executeRun a registered analytics operation (zonal_stats / time_series / change_detection).C
Read-only

Run a registered analytics operation (zonal_stats / time_series / change_detection).

Inputs: operation (required), params (required), x-api-key. Returns: object

analytics.index.getDetailed info about a single spectral index (+ compatible sensors).C
Read-only

Detailed info about a single spectral index (+ compatible sensors).

Inputs: index_name (required), x-api-key.

analytics.indices.listList spectral indices (optionally filtered by category / sensor compatibility).C
Read-only

List spectral indices (optionally filtered by category / sensor compatibility).

Inputs: x-api-key, category, sensor.

analytics.operations.getDetailed capabilities of a single analytics operation.D
Read-only

Detailed capabilities of a single analytics operation.

Inputs: operation_name (required), x-api-key.

analytics.operations.listList all registered analytics operations + their input schemas (discovery).C
Read-only

List all registered analytics operations + their input schemas (discovery).

Inputs: x-api-key, data_type.

analytics.sensors.listList supported sensors and their band mappings.C
Read-only

List supported sensors and their band mappings.

Inputs: _empty (required), x-api-key.

analytics.validate_formulaValidate a band-math formula (syntax + required bands) without executing it.C
Read-only

Validate a band-math formula (syntax + required bands) without executing it.

Inputs: formula (required), sensor (required), x-api-key. Returns: available_bands, error, formula, required_bands, +2 more

api_keys.createMint an organization API key (the secret is returned once).B

Mint an organization API key (the secret is returned once).

Inputs: name (required), x-api-key, expires_in_days, permissions, +1 more. Returns: created_at, expires_at, id, key, +3 more

api_keys.listList an organization's API keys (metadata only — never the secret).C
Read-only

List an organization's API keys (metadata only — never the secret).

Inputs: apikeylistinput (required), x-api-key.

api_keys.revokeRevoke an organization API key.D
Destructive

Revoke an organization API key.

Inputs: key_id (required), x-api-key. Returns: id, ok

assets.deleteDelete an asset (file) from an item (item access required).C
Destructive

Delete an asset (file) from an item (item access required).

Inputs: asset_id (required), item_id (required), x-api-key. Returns: id

band_formulas.createCreate a custom band-math formula for the caller's organization (write scope).C

Create a custom band-math formula for the caller's organization (write scope).

Inputs: formula (required), name (required), x-api-key, category, +4 more. Returns: category, colormap, created_at, description, +9 more

band_formulas.deleteDelete a custom band-math formula (write scope; templates are protected).B
Destructive

Delete a custom band-math formula (write scope; templates are protected).

Inputs: formula_id (required), x-api-key. Returns: id, ok

band_formulas.getGet a single custom band-math formula by id (org-scoped; cross-org → 404).C
Read-only

Get a single custom band-math formula by id (org-scoped; cross-org → 404).

Inputs: formula_id (required), x-api-key.

band_formulas.listList the caller-org's custom band-math formulas (optional category/template filters).C
Read-only

List the caller-org's custom band-math formulas (optional category/template filters).

Inputs: x-api-key, category, include_templates.

band_formulas.updateUpdate a custom band-math formula (write scope; org-scoped).C

Update a custom band-math formula (write scope; org-scoped).

Inputs: formula_id (required), x-api-key, category, colormap, +5 more. Returns: category, colormap, created_at, description, +9 more

billing.approvals.approveApprove a credit purchase and charge the saved card (human approver only).C
Idempotent

Approve a credit purchase and charge the saved card (human approver only).

Inputs: approval_id (required), x-api-key. Returns: id

billing.approvals.getGet one credit-purchase approval (org-scoped).C
Read-only

Get one credit-purchase approval (org-scoped).

Inputs: approval_id (required), x-api-key.

billing.approvals.listList the org's credit-purchase approvals (optionally by status).C
Read-only

List the org's credit-purchase approvals (optionally by status).

Inputs: x-api-key, status.

billing.approvals.rejectReject a pending credit-purchase approval.C

Reject a pending credit-purchase approval.

Inputs: approval_id (required), x-api-key, reason. Returns: id

billing.approvals.requestRequest approval for a large credit purchase.D

Request approval for a large credit purchase.

Inputs: credits (required), x-api-key, expiry_hours. Returns: id

billing.auto_topup.getRead the org's auto-topup settings (enabled=false if unset).C
Read-only

Read the org's auto-topup settings (enabled=false if unset).

Inputs: _empty (required), x-api-key.

billing.credits.balanceThe org's current credit balance.C
Read-only

The org's current credit balance.

Inputs: _empty (required), x-api-key.

billing.credits.transactionsThe org's credit ledger (paged, optionally filtered by reason).C
Read-only

The org's credit ledger (paged, optionally filtered by reason).

Inputs: x-api-key, limit, offset, reason.

billing.deletions.pendingList organizations pending deletion (system admin).C
Read-only

List organizations pending deletion (system admin).

Inputs: _empty (required), x-api-key.

billing.dlq.list_pendingUnresolved tracking-failure DLQ counts, grouped by storage_type + source.C
Read-only

Unresolved tracking-failure DLQ counts, grouped by storage_type + source.

Inputs: _empty (required), x-api-key.

billing.enterprise.accrualThe org's unbilled enterprise post-pay liability (to put on a Xero invoice).C
Read-only

The org's unbilled enterprise post-pay liability (to put on a Xero invoice).

Inputs: organization_id (required), x-api-key, period.

billing.free_tier.list_pendingOrgs awaiting free-tier approval (the operator review queue).C
Read-only

Orgs awaiting free-tier approval (the operator review queue).

Inputs: _empty (required), x-api-key.

billing.invoices.listThe org's enterprise invoices (grouped from settled orders).D
Read-only

The org's enterprise invoices (grouped from settled orders).

Inputs: x-api-key, limit.

billing.plans.listList all available plans with their quota/feature limits (public catalog).C
Read-only

List all available plans with their quota/feature limits (public catalog).

Inputs: _empty (required), x-api-key.

billing.reconciliation.detect_driftCompute storage-billing drift for one org (no run recorded).C
Read-only

Compute storage-billing drift for one org (no run recorded).

Inputs: organization_id (required), x-api-key.

billing.reconciliation.list_correctionsAudit trail of all drift corrections applied (compliance + support).C
Read-only

Audit trail of all drift corrections applied (compliance + support).

Inputs: x-api-key, limit, organization_id.

billing.reconciliation.list_runsList reconciliation runs (newest first; filter by org / flagged).C
Read-only

List reconciliation runs (newest first; filter by org / flagged).

Inputs: x-api-key, flagged_only, limit, organization_id.

billing.set_auto_topupConfigure automatic top-up (requires a default card when enabling).D

Configure automatic top-up (requires a default card when enabling).

Inputs: enabled (required), threshold_credits (required), topup_amount_credits (required), x-api-key, +1 more. Returns: enabled, threshold_credits, topup_amount_credits

billing.status.getAn org's billing status + current usage (org membership required).C
Read-only

An org's billing status + current usage (org membership required).

Inputs: organization_id (required), x-api-key.

billing.stripe_invoices.listList the org's Stripe invoices (never 500s — empty on a Stripe hiccup).C
Read-only

List the org's Stripe invoices (never 500s — empty on a Stripe hiccup).

Inputs: x-api-key, limit.

billing.topupInvoke Billing TopupA
Idempotent

Off-session card charge → credits. Idempotency is at the STRIPE level: the client's Idempotency-Key is threaded into charge_for_credits (Stripe dedups the charge, the PaymentIntent id dedups the grant), matching the legacy /billing/topup exactly. On 3DS/SCA the op raises a 402 carrying the PaymentIntent client_secret, which we surface at the TOP LEVEL of the problem body — problem.client_secret — because that's what the topup page reads to drive confirmCardPayment.

Inputs: Idempotency-Key, x-api-key, body.

catalog.granule_pointsExtract a 3D point cloud (lon/lat/elev/attribute) from a GEDI or ICESat-2 granule.C
Read-only

Extract a 3D point cloud (lon/lat/elev/attribute) from a GEDI or ICESat-2 granule.

Inputs: bbox (required), collection (required), href (required), x-api-key, +2 more. Returns: count, points, returned, subsampled, +2 more

catalog.image.quicklookResolve + 307-redirect to a scene's quicklook (external host).C
Read-only

Resolve + 307-redirect to a scene's quicklook (external host).

Inputs: host_name (required), image_id (required), x-api-key.

catalog.image.thumbnailResolve + 307-redirect to a scene's thumbnail (external host).C
Read-only

Resolve + 307-redirect to a scene's thumbnail (external host).

Inputs: host_name (required), image_id (required), x-api-key.

catalog.info.landsatLandsat scene metadata (parsed id fields + available visualizations).C
Read-only

Landsat scene metadata (parsed id fields + available visualizations).

Inputs: scene_id (required), x-api-key.

catalog.info.naipNAIP item metadata from the Element84 STAC.C
Read-only

NAIP item metadata from the Element84 STAC.

Inputs: scene_id (required), x-api-key.

catalog.info.sampleSample scene metadata (sensor + on-disk STAC + bands + thumbnail).C
Read-only

Sample scene metadata (sensor + on-disk STAC + bands + thumbnail).

Inputs: provider (required), scene_id (required), x-api-key.

catalog.info.sentinelSentinel-2 scene metadata (parsed id + live COG info + available visualizations).C
Read-only

Sentinel-2 scene metadata (parsed id + live COG info + available visualizations).

Inputs: scene_id (required), x-api-key.

catalog.provider.samplesList sample scenes for a provider (paged).C
Read-only

List sample scenes for a provider (paged).

Inputs: provider (required), x-api-key, limit, offset.

catalog.providers.listList on-disk sample-data providers (+ registered sensors).C
Read-only

List on-disk sample-data providers (+ registered sensors).

Inputs: vizlistinput (required), x-api-key.

catalog.searchSearch a commercial-imagery host's catalog (STAC, price-enriched).C
Read-only

Search a commercial-imagery host's catalog (STAC, price-enriched).

Inputs: host_name (required), x-api-key, bbox, collections, +7 more. Returns: object

catalog.sources.listList every searchable data source + its collections (the dataset registry).C
Read-only

List every searchable data source + its collections (the dataset registry).

Inputs: x-api-key, country, data_type, scope. Returns: sources

catalog.vendors.listList catalog vendors + host⇄pricing-vendor identifiers.C
Read-only

List catalog vendors + host⇄pricing-vendor identifiers.

Inputs: _empty (required), x-api-key.

catalog.viz.landsatList available Landsat visualizations.D
Read-only

List available Landsat visualizations.

Inputs: vizlistinput (required), x-api-key.

catalog.viz.naipList available NAIP visualizations.C
Read-only

List available NAIP visualizations.

Inputs: vizlistinput (required), x-api-key.

clip.area.metadataCapture-date metadata for a clip area.C
Read-only

Capture-date metadata for a clip area.

Inputs: area (required), x-api-key.

clip.area.mosaicsList mosaic types for a clip area.C
Read-only

List mosaic types for a clip area.

Inputs: area (required), x-api-key.

clip.areas.listList delivery-bucket clip areas.C
Read-only

List delivery-bucket clip areas.

Inputs: _empty (required), x-api-key.

clip.create_from_itemInvoke Clip Create From ItemA
Idempotent

Create + dispatch a cog_clip job from an item — a money path (reserves CU), so it carries Idempotency-Key parity: a retry replays the first response (one job reserved + dispatched, never a duplicate).

Inputs: x-api-key, body.

clip.job.downloadsList downloadable clip files for a job.C
Read-only

List downloadable clip files for a job.

Inputs: job_id (required), x-api-key.

clip.job.getGet a single clip job by id.C
Read-only

Get a single clip job by id.

Inputs: job_id (required), x-api-key.

clip.jobs.listList clip jobs for an organization.C
Read-only

List clip jobs for an organization.

Inputs: organization_id (required), x-api-key, limit, offset, +1 more.

clip.job.tile_infoTile rendering params for a completed clip job.C
Read-only

Tile rendering params for a completed clip job.

Inputs: job_id (required), x-api-key.

cog.colormapsCurated colormap groups for the frontend picker (bare-dict).C
Read-only

Curated colormap groups for the frontend picker (bare-dict).

Inputs: cogemptyinput (required), x-api-key.

cog.formulasPredefined spectral-index formula templates (bare-dict, keyed by index id).C
Read-only

Predefined spectral-index formula templates (bare-dict, keyed by index id).

Inputs: cogemptyinput (required), x-api-key.

cog.statisticsAOI-scoped percentile statistics for a COG — drives per-AOI colormap rescale.D
Read-only

AOI-scoped percentile statistics for a COG — drives per-AOI colormap rescale.

Inputs: geometry (required), url (required), x-api-key, bands, +2 more.

collections.createCreate an organizing collection within a project (editor/admin required).B

Create an organizing collection within a project (editor/admin required).

Inputs: name (required), project_id (required), x-api-key, color, +3 more. Returns: Collection as returned from the API.

collections.deleteSoft-delete a collection, unlinking its items (project admin required).C
Destructive

Soft-delete a collection, unlinking its items (project admin required).

Inputs: collection_id (required), project_id (required), x-api-key. Returns: id, ok

collections.getGet a collection by id within a project. Project member access + belongs-to-project guard.C
Read-only

Get a collection by id within a project. Project member access + belongs-to-project guard.

Inputs: collection_id (required), project_id (required), x-api-key.

collections.listList a project's collections (with item counts). Project member access.C
Read-only

List a project's collections (with item counts). Project member access.

Inputs: project_id (required), x-api-key.

collections.updateUpdate a collection's metadata (editor/admin required).C

Update a collection's metadata (editor/admin required).

Inputs: collection_id (required), project_id (required), x-api-key, color, +4 more. Returns: Collection as returned from the API.

eulas.document.getGet a single EULA document enriched with the caller's org acceptance.C
Read-only

Get a single EULA document enriched with the caller's org acceptance.

Inputs: document_id (required), eula_id (required), x-api-key.

eulas.documents.listList an EULA's documents (paged), each enriched with the caller's org acceptance.C
Read-only

List an EULA's documents (paged), each enriched with the caller's org acceptance.

Inputs: eula_id (required), x-api-key, page, size, +1 more.

eulas.getGet a single EULA enriched with the caller's org acceptance.C
Read-only

Get a single EULA enriched with the caller's org acceptance.

Inputs: eula_id (required), x-api-key.

eulas.listList EULAs (paged), each enriched with the caller's org acceptance.C
Read-only

List EULAs (paged), each enriched with the caller's org acceptance.

Inputs: x-api-key, page, size, sort, +1 more.

event_subscriptions.createCreate a webhook subscription for the caller's organization.C

Create a webhook subscription for the caller's organization.

Inputs: endpoint_url (required), event_type (required), x-api-key, description, +2 more. Returns: id

event_subscriptions.deleteDelete a webhook subscription (org-scoped).C
Destructive

Delete a webhook subscription (org-scoped).

Inputs: subscription_id (required), x-api-key. Returns: deleted

event_subscriptions.getGet a single webhook subscription (org-scoped; secret redacted).C
Read-only

Get a single webhook subscription (org-scoped; secret redacted).

Inputs: subscription_id (required), x-api-key.

event_subscriptions.listList the caller's organization's webhook subscriptions (secret redacted).C
Read-only

List the caller's organization's webhook subscriptions (secret redacted).

Inputs: x-api-key, active, event_type.

event_subscriptions.testSend a test event to a webhook subscription and return the delivery result.C

Send a test event to a webhook subscription and return the delivery result.

Inputs: subscription_id (required), x-api-key. Returns: delivered, error, event_id, event_type, +2 more

event_subscriptions.updateUpdate a webhook subscription (org-scoped).C

Update a webhook subscription (org-scoped).

Inputs: subscription_id (required), x-api-key, active, description, +3 more. Returns: id

glossary.collections.getGet a single catalog collection by name.C
Read-only

Get a single catalog collection by name.

Inputs: collection_name (required), x-api-key.

glossary.collections.listList catalog collections (provider-compatible, paged).C
Read-only

List catalog collections (provider-compatible, paged).

Inputs: x-api-key, integrations, page, size, +2 more.

glossary.data_products.getGet a single catalog data product by name.C
Read-only

Get a single catalog data product by name.

Inputs: data_product_name (required), x-api-key.

glossary.data_products.listList catalog data products (provider-compatible, paged).C
Read-only

List catalog data products (provider-compatible, paged).

Inputs: x-api-key, dataProductId, page, size, +1 more.

glossary.providers.getGet a single catalog provider by name.C
Read-only

Get a single catalog provider by name.

Inputs: provider_name (required), x-api-key.

glossary.providers.listList catalog providers (PRODUCER/HOST, paged).C
Read-only

List catalog providers (PRODUCER/HOST, paged).

Inputs: x-api-key, page, role, size, +1 more.

items.createCreate an item within a project (editor/admin on the project).D

Create an item within a project (editor/admin on the project).

Inputs: name (required), project_id (required), type (required), x-api-key, +15 more. Returns: Item as returned from the API.

items.deleteSoft-delete an item (admin/editor on the item's project required).C
Destructive

Soft-delete an item (admin/editor on the item's project required).

Inputs: item_id (required), x-api-key. Returns: id, ok

items.detect_asset_bandsAuto-detect band names for an asset from its reflectance statistics.C

Auto-detect band names for an asset from its reflectance statistics.

Inputs: asset_id (required), item_id (required), x-api-key. Returns: current_band_names, method, suggested_band_names

items.duplicateDuplicate an item with its assets + viz profiles (admin/editor on the project).C

Duplicate an item with its assets + viz profiles (admin/editor on the project).

Inputs: item_id (required), x-api-key, new_name, target_collection_id, +1 more. Returns: Item as returned from the API.

items.getFetch a single catalog item by id.C
Read-only

Fetch a single catalog item by id.

Inputs: item_id (required), x-api-key. Returns: item

items.get_stacGet an item as a full STAC 1.0.0 Feature with embedded assets + links. Item member access.D
Read-only

Get an item as a full STAC 1.0.0 Feature with embedded assets + links. Item member access.

Inputs: item_id (required), x-api-key, base_url.

items.lineageGet the lineage tree (parents + children) for an item. Item member access.C
Read-only

Get the lineage tree (parents + children) for an item. Item member access.

Inputs: item_id (required), x-api-key.

items.listList a project's items (optionally filtered by collection). Project member access.B
Read-only

List a project's items (optionally filtered by collection). Project member access.

Inputs: project_id (required), x-api-key, collection_id, limit, +2 more.

items.list_assetsList all assets (files) attached to an item. Item member access.C
Read-only

List all assets (files) attached to an item. Item member access.

Inputs: item_id (required), x-api-key.

items.list_by_collectionList items in a collection (access via the collection's project). Project member access.B
Read-only

List items in a collection (access via the collection's project). Project member access.

Inputs: collection_id (required), x-api-key, limit, offset.

items.list_expiringList items approaching retention expiry (system-wide, for the notification cron).C
Read-only

List items approaching retention expiry (system-wide, for the notification cron).

Inputs: x-api-key, days.

items.searchSearch a project's items with STAC-compatible filters (project member access).C
Read-only

Search a project's items with STAC-compatible filters (project member access).

Inputs: project_id (required), x-api-key, base_url, bbox, +8 more. Returns: features, numberMatched, type

items.search_orgSearch all items across the caller's organization (STAC-compatible).C
Read-only

Search all items across the caller's organization (STAC-compatible).

Inputs: x-api-key, base_url, bbox, collections, +7 more. Returns: features, numberMatched, type

items.set_asset_band_namesRename the bands on an item's asset (project member access).C

Rename the bands on an item's asset (project member access).

Inputs: asset_id (required), band_names (required), item_id (required), x-api-key. Returns: id

items.tile.statisticsGlobal expression statistics (p2/p98 rescale) from the smallest COG overview.C
Read-only

Global expression statistics (p2/p98 rescale) from the smallest COG overview.

Inputs: expression (required), item_id (required), x-api-key, asset_key, +1 more.

items.tile.tilejsonTileJSON metadata for one of our catalog items.D
Read-only

TileJSON metadata for one of our catalog items.

Inputs: item_id (required), x-api-key, asset_key, profile.

items.updateUpdate an item's mutable metadata (editor/admin on its project).C

Update an item's mutable metadata (editor/admin on its project).

Inputs: item_id (required), x-api-key, bbox, cloud_cover, +8 more. Returns: Item as returned from the API.

notifications.dismissDismiss one of the caller's notifications (hide it from the list).C

Dismiss one of the caller's notifications (hide it from the list).

Inputs: notification_id (required), x-api-key. Returns: id

notifications.listList the caller's notifications, newest first (user-scoped inbox).C
Read-only

List the caller's notifications, newest first (user-scoped inbox).

Inputs: x-api-key, limit, offset, unread_only.

notifications.mark_all_readMark all of the caller's unread notifications as read.C

Mark all of the caller's unread notifications as read.

Inputs: _empty (required), x-api-key. Returns: marked_count

notifications.mark_readMark one of the caller's notifications as read.C

Mark one of the caller's notifications as read.

Inputs: notification_id (required), x-api-key. Returns: id

notifications.unread_countCount the caller's unread, undismissed notifications (lightweight poll).C
Read-only

Count the caller's unread, undismissed notifications (lightweight poll).

Inputs: _empty (required), x-api-key.

orders.archive.estimatePreview the server-authoritative AOI price for a cart of archive captures.C
Read-only

Preview the server-authoritative AOI price for a cart of archive captures.

Inputs: x-api-key, captures, splitByDate. Returns: errors, groups, total_aud, total_credits

orders.archive.placeInvoke Archive PlaceB
Idempotent

Place an archive order — a money path, so it carries Idempotency-Key parity with the legacy /v2/orders/archive route it replaces. A repeat with the same key replays the first response (one order, one credit reservation).

Returns 202 Accepted (the order lands in awaiting_data), matching the legacy wire contract exactly so the cutover is invisible to every client.

Declared BEFORE the generic /op/{operation_id} route so FastAPI matches this static path first; everything else still flows through the generic dispatch.

Inputs: x-api-key, body.

orders.cancelCancel an order (policy-gated), refunding/voiding its reservation.C
Idempotent

Cancel an order (policy-gated), refunding/voiding its reservation.

Inputs: order_id (required), x-api-key. Returns: orderId, status

orders.coverage.getCovered-vs-remainder coverage for a fulfilled/fulfilling tasking order.C
Read-only

Covered-vs-remainder coverage for a fulfilled/fulfilling tasking order.

Inputs: order_id (required), x-api-key.

orders.coverage.groups.listPer-AOI delivered-vs-requested coverage for a tasking order (any status).C
Read-only

Per-AOI delivered-vs-requested coverage for a tasking order (any status).

Inputs: order_id (required), x-api-key.

orders.estimatePrice-preview an order without committing (provider-compatible).D
Read-only

Price-preview an order without committing (provider-compatible).

Inputs: dataProduct (required), x-api-key, displayName, featureCollection, +2 more.

orders.getGet a single order (org-scoped).C
Read-only

Get a single order (org-scoped).

Inputs: order_id (required), x-api-key.

orders.get_schemaGet the dynamic order-form schema for a data product (reference).C
Read-only

Get the dynamic order-form schema for a data product (reference).

Inputs: data_product_id (required), x-api-key.

orders.listList the org's orders (filtered, paged, provider-compatible).D
Read-only

List the org's orders (filtered, paged, provider-compatible).

Inputs: x-api-key, dataProductIds, displayName, orderIds, +8 more.

orders.list_assetsList the items + assets delivered for an order (STAC FeatureCollection).C
Read-only

List the items + assets delivered for an order (STAC FeatureCollection).

Inputs: order_id (required), x-api-key.

orders.placePlace order(s) from a FeatureCollection (archive reserves; tasking queues feasibility).D
Idempotent

Place order(s) from a FeatureCollection (archive reserves; tasking queues feasibility).

Inputs: dataProduct (required), workspaceId (required), x-api-key, displayName, +3 more. Returns: object

orders.tasking.decisions.pendingUnified inbox of the org's pending tasking decisions (feasibility + quotation).C
Read-only

Unified inbox of the org's pending tasking decisions (feasibility + quotation).

Inputs: x-api-key, kinds, page, size, +1 more.

orders.tasking.estimatePreview the server-authoritative price for an AOI-priced tasking request.C
Read-only

Preview the server-authoritative price for an AOI-priced tasking request.

Inputs: x-api-key, groups. Returns: errors, groups, totalAud, totalCredits

orders.tasking.feasibility_checkPredict whether a tasking order needs a feasibility study (per-feature).C
Read-only

Predict whether a tasking order needs a feasibility study (per-feature).

Inputs: dataProduct (required), x-api-key, displayName, featureCollection, +1 more.

orders.tasking.feasibility_studies.listList the org's feasibility studies (+ their options, paged).D
Read-only

List the org's feasibility studies (+ their options, paged).

Inputs: x-api-key, decision, id, orderId, +3 more.

orders.tasking.groups.listList an order's tasking groups (admin).C
Read-only

List an order's tasking groups (admin).

Inputs: order_id (required), x-api-key.

orders.tasking.opportunities_listPredicted satellite passes for a tasking AOI (manual-feasibility: empty).D
Read-only

Predicted satellite passes for a tasking AOI (manual-feasibility: empty).

Inputs: dataProduct (required), x-api-key, displayName, featureCollection, +1 more.

orders.tasking.placeInvoke Tasking PlaceB
Idempotent

Place a tasking order — a commercial-order money path, so it carries Idempotency-Key parity (one order per key) with the legacy /v2/orders/tasking route it replaces. 202 Accepted matches the legacy wire contract exactly.

Declared BEFORE the generic /op/{operation_id} route so FastAPI matches this static path first.

Inputs: x-api-key, body.

orders.tasking.quotations.listList the org's tasking quotations (paged).C
Read-only

List the org's tasking quotations (paged).

Inputs: x-api-key, decision, id, orderId, +3 more.

orders.tasking.sensorsList the tasking sensor catalog (ids, resolution, bands, pricing inputs).C
Read-only

List the tasking sensor catalog (ids, resolution, bands, pricing inputs).

Inputs: taskingsensorsinput (required), x-api-key. Returns: sensors

orders.tasking.templates.deleteSoft-delete a tasking template (org-scoped).C

Soft-delete a tasking template (org-scoped).

Inputs: template_id (required), x-api-key. Returns: deleted, template_id

orders.tasking.templates.listList the caller organization's active tasking templates.C
Read-only

List the caller organization's active tasking templates.

Inputs: templatelistinput (required), x-api-key. Returns: templates

orders.tasking.templates.saveSave a reusable tasking acquisition template for the caller's organization.D

Save a reusable tasking acquisition template for the caller's organization.

Inputs: capture_frequency (required), datum (required), file_format (required), name (required), +8 more. Returns: id, name

orders.updatePatch an order's tags (metadata only; provider merge-patch).C

Patch an order's tags (metadata only; provider merge-patch).

Inputs: order_id (required), x-api-key, tags. Returns: object

organizations.commitments.listList the org's minimum commitments with server-computed burn-down + take-or-pay.C
Read-only

List the org's minimum commitments with server-computed burn-down + take-or-pay.

Inputs: x-api-key, commitment_id, include_line_items.

organizations.commitments.statementMonthly enterprise statement: all activity (commitment lines flagged) + burn-down + settlement reconciliation.C
Read-only

Monthly enterprise statement: all activity (commitment lines flagged) + burn-down + settlement reconciliation.

Inputs: organization_id (required), x-api-key, period.

organizations.createCreate an organization and enroll the caller as its owner (self-serve onboarding).C

Create an organization and enroll the caller as its owner (self-serve onboarding).

Inputs: name (required), x-api-key, abn, billing_address, +9 more. Returns: enterprise_billing, id, name, slug

payment_methods.attachPersist a saved card (Airwallex Payment Consent) for the org.D

Persist a saved card (Airwallex Payment Consent) for the org.

Inputs: payment_method_id (required), x-api-key. Returns: id, isDefault

payment_methods.create_setup_intentStart saving a card to the org (off-session) — returns the Airwallex client_secret + env.C

Start saving a card to the org (off-session) — returns the Airwallex client_secret + env.

Inputs: setupintentinput (required), x-api-key. Returns: client_secret, customer_id, env, setup_intent_id

payment_methods.detachDetach (remove) a saved payment method from the org.D
Destructive

Detach (remove) a saved payment method from the org.

Inputs: payment_method_row_id (required), x-api-key. Returns: ok

payment_methods.listList the org's saved payment methods.C
Read-only

List the org's saved payment methods.

Inputs: _empty (required), x-api-key.

payment_methods.set_defaultMake a saved payment method the org's default (used by off-session charges).C

Make a saved payment method the org's default (used by off-session charges).

Inputs: payment_method_row_id (required), x-api-key. Returns: id, isDefault

processing.catalog.estimateEstimate the cost of running a process with the given inputs.D
Read-only

Estimate the cost of running a process with the given inputs.

Inputs: process_id (required), x-api-key, inputs.

processing.catalog.getGet one process description (public).D
Read-only

Get one process description (public).

Inputs: process_id (required), x-api-key.

processing.catalog.listList available processes (OGC process catalog, public).C
Read-only

List available processes (OGC process catalog, public).

Inputs: _empty (required), x-api-key.

processing.catalog.validateValidate process inputs (provider returns empty body on success).C
Read-only

Validate process inputs (provider returns empty body on success).

Inputs: process_id (required), x-api-key, inputs.

processing.createInvoke Processing CreateA
Idempotent

Create a processing job (no dispatch) — a money path (reserves credits), so it carries Idempotency-Key parity: a retry with the same key replays the first response (one job created + reserved, never a duplicate). 201 matches the legacy POST /processing-jobs wire contract.

Inputs: x-api-key, body.

processing.create_and_dispatchInvoke Create And DispatchB
Idempotent

Create + dispatch a processing job — a money path (reserves credits), so it carries Idempotency-Key parity: a retry with the same key replays the first response (one job created + reserved + dispatched, never a duplicate).

Inputs: x-api-key, body.

processing.dispatchDispatch an existing pending processing job to its registered worker.C
Idempotent

Dispatch an existing pending processing job to its registered worker.

Inputs: job_id (required), x-api-key, version. Returns: dispatch, job

processing.executeExecute a process (reserve credits + dispatch a job).C
Idempotent

Execute a process (reserve credits + dispatch a job).

Inputs: process_id (required), workspaceId (required), x-api-key, inputs. Returns: object

processing.job.getGet a processing job by id (provider facade, org-scoped).C
Read-only

Get a processing job by id (provider facade, org-scoped).

Inputs: job_id (required), x-api-key.

processing.jobs.listList the org's processing jobs (provider facade, org-scoped).C
Read-only

List the org's processing jobs (provider facade, org-scoped).

Inputs: x-api-key, ids, limit, page, +4 more.

processing.job.tile_infoTile rendering info for any completed processing job (clip/bathy outputs).C
Read-only

Tile rendering info for any completed processing job (clip/bathy outputs).

Inputs: job_id (required), x-api-key.

processing.job_types.listList available processing job types (optionally by category).C
Read-only

List available processing job types (optionally by category).

Inputs: x-api-key, category.

processing.project_job.getGet a processing job by id (org match + project access).C
Read-only

Get a processing job by id (org match + project access).

Inputs: job_id (required), x-api-key.

processing.project_jobs.listList a project's processing jobs (project member access).C
Read-only

List a project's processing jobs (project member access).

Inputs: project_id (required), x-api-key, job_type_name, limit, +2 more.

projects.add_memberAdd a member to a workspace (project admin/owner).C

Add a member to a workspace (project admin/owner).

Inputs: project_id (required), user_id (required), x-api-key, role. Returns: object

projects.archiveArchive a workspace, hiding it from the default list (project admin/owner).C

Archive a workspace, hiding it from the default list (project admin/owner).

Inputs: project_id (required), x-api-key, description, is_archived, +1 more. Returns: Project as returned from the API.

projects.createCreate a workspace in the caller's organization.D

Create a workspace in the caller's organization.

Inputs: name (required), x-api-key, description, gcs_region. Returns: Project as returned from the API.

projects.deletePermanently delete a workspace and all its data (project admin/owner).C
Destructive

Permanently delete a workspace and all its data (project admin/owner).

Inputs: project_id (required), x-api-key. Returns: deleted, project_id, storage_freed_bytes

projects.remove_memberRemove a member from a workspace (project admin/owner).C
Destructive

Remove a member from a workspace (project admin/owner).

Inputs: project_id (required), user_id (required), x-api-key. Returns: ok

projects.updateUpdate a workspace's metadata (project admin/owner).D

Update a workspace's metadata (project admin/owner).

Inputs: project_id (required), x-api-key, description, is_archived, +1 more. Returns: Project as returned from the API.

projects.update_memberChange a member's role in a workspace (project admin/owner).C

Change a member's role in a workspace (project admin/owner).

Inputs: project_id (required), role (required), user_id (required), x-api-key. Returns: object

provenance.getWalk the provenance/lineage graph for an entity (how it was produced / what derived from it).C
Read-only

Walk the provenance/lineage graph for an entity (how it was produced / what derived from it).

Inputs: entity_id (required), entity_type (required), x-api-key, direction, +1 more. Returns: direction, edges, nodes, root

share.link.createCreate a password-protected share link for an item or collection.C

Create a password-protected share link for an item or collection.

Inputs: expires_at (required), password (required), target_id (required), target_type (required), +2 more. Returns: Mirrors ShareLinkResponse on the wire, but created_by is Optional — a service-r…

share.link.revokeRevoke a share link (editor/admin on the shared target's project).C
Destructive

Revoke a share link (editor/admin on the shared target's project).

Inputs: link_id (required), x-api-key. Returns: id, ok

share.link.validateValidate a share link (token + password) and return the shared target.C
Read-only

Validate a share link (token + password) and return the shared target.

Inputs: token (required), x-api-key, password. Returns: permission, target, target_type

share.tilejsonTileJSON for a publicly-shared item (token + password).C
Read-only

TileJSON for a publicly-shared item (token + password).

Inputs: token (required), x-api-key, password, profile.

stac.collections.listList STAC Collections owned by the caller's organization (provider-compatible).C
Read-only

List STAC Collections owned by the caller's organization (provider-compatible).

Inputs: x-api-key, base_url.

stac.searchCross-collection STAC search (CQL2-JSON / bbox / intersects), org-scoped.D
Read-only

Cross-collection STAC search (CQL2-JSON / bbox / intersects), org-scoped.

Inputs: x-api-key, base_url, bbox, collections, +8 more.

uploads.completeInvoke Uploads CompleteA

Complete an upload, then schedule the post-upload pipeline AFTER the response (metadata extraction / viz profiles / auto-collections) — same deferral the legacy route did via BackgroundTasks. The op creates the item/asset records + provenance synchronously; the pipeline is best-effort post-processing.

Inputs: x-api-key, body.

uploads.failMark an upload session failed, releasing its storage reservation.C

Mark an upload session failed, releasing its storage reservation.

Inputs: error_message (required), upload_id (required), x-api-key, error_step. Returns: id

uploads.initiateStart an upload session, reserving storage quota (editor/admin on the project).C

Start an upload session, reserving storage quota (editor/admin on the project).

Inputs: project_id (required), x-api-key, asset_key, file_count, +5 more. Returns: id

uploads.progressUpdate an upload session's progress.D

Update an upload session's progress.

Inputs: upload_id (required), x-api-key, bytes_uploaded, status. Returns: id

uploads.signed_urlMint a signed URL for uploading a file into an upload session.C

Mint a signed URL for uploading a file into an upload session.

Inputs: file_name (required), upload_id (required), x-api-key, content_type. Returns: object_path, upload_url

usage.currentUsage stats for the current billing period (storage, tiles, credits, jobs).B
Read-only

Usage stats for the current billing period (storage, tiles, credits, jobs).

Inputs: organization_id (required), x-api-key.

usage.historyHistorical usage (tile requests + peak storage) for the past N months.C
Read-only

Historical usage (tile requests + peak storage) for the past N months.

Inputs: organization_id (required), x-api-key, months.

visualization.list_forThe visualizations available for an item — RGB/index/elevation — backend-owned + resolved.C
Read-only

The visualizations available for an item — RGB/index/elevation — backend-owned + resolved.

Inputs: x-api-key, asset, band_roles, data_type, +1 more. Returns: default_id, visualizations

visualization.profile.createCreate a visualization profile for an item (editor/admin).C

Create a visualization profile for an item (editor/admin).

Inputs: config (required), item_id (required), name (required), type (required), +5 more. Returns: Visualization profile as returned from the API.

visualization.profile.deleteDelete a visualization profile (editor/admin).C
Destructive

Delete a visualization profile (editor/admin).

Inputs: item_id (required), profile_id (required), x-api-key. Returns: id, ok

visualization.profile.getGet a single visualization profile for an item. Item member access.C
Read-only

Get a single visualization profile for an item. Item member access.

Inputs: item_id (required), profile_id (required), x-api-key.

visualization.profile.set_defaultSet a profile as the item's default (editor/admin).C

Set a profile as the item's default (editor/admin).

Inputs: item_id (required), profile_id (required), x-api-key. Returns: Visualization profile as returned from the API.

visualization.profiles.listList all visualization profiles for an item (ordered by sort_order, created_at). Item member access.C
Read-only

List all visualization profiles for an item (ordered by sort_order, created_at). Item member access.

Inputs: item_id (required), x-api-key.

visualization.profile.updateUpdate a visualization profile (editor/admin).C

Update a visualization profile (editor/admin).

Inputs: item_id (required), profile_id (required), x-api-key, asset_key, +5 more. Returns: Visualization profile as returned from the API.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.5/5.0

    Scored across 188 tools

    Disambiguation3/5

    Tools are namespaced by domain (e.g., alerts.*, analytics.*), which helps distinguish them. However, there is overlap in estimating functions across orders.archive.estimate, orders.estimate, processing.catalog.estimate, leading to potential confusion.

    Naming Consistency5/5

    All tools follow a consistent dot-separated prefix convention (domain.subdomain.action) with verb_noun patterns. No mixing of naming styles or unpredictable patterns.

    Tool Count2/5

    With 188 tools, the server is extremely large, likely overwhelming for agents. This count exceeds typical well-scoped servers and suggests the surface could be broken into smaller, more focused servers.

    Completeness4/5

    The tool set covers a vast array of geospatial operations including alerts, analytics, billing, catalog, orders, processing, and more. Minor gaps exist, such as lack of user management (e.g., invitations), but overall the domain is well-covered.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      MCP server for spatial queries via the Terranode Geospatial API, enabling AI agents to perform point-in-polygon lookups, nearest feature search, distance calculations, and spatial joins.
      6
      55 npm
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      A Model Context Protocol (MCP) server that exposes GeoServer REST API functionality for natural language interaction through AI assistants like Claude, VS Code Copilot, and other MCP-compatible clients.
      56 PyPI
      BSD 2-Clause "Simplified"
    • A
      license
      Not graded
      quality
      A
      maintenance
      An MCP server that connects AI agents to cloud-native geospatial data via STAC metadata and DuckDB with H3 spatial indexing, enabling zero-configuration SQL queries on terabyte-scale datasets over S3.
      22
      BSD 3-Clause