geopera-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@geopera-mcp find satellite imagery of New York"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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-mcpThis 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-mcpgeopera-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 base URL. Default |
| A |
|
|
| Port for the |
Documentation
Full docs: docs.geopera.com/api-reference/sdks/mcp.
License
MIT
Available Tools
188 toolsalerts.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).CDestructive
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).CRead-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).CRead-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).CRead-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.CRead-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).CRead-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).CRead-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).CRead-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.DRead-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).CRead-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.CRead-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.CRead-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).CRead-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.DDestructive
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).CDestructive
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).BDestructive
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).CRead-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).CRead-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).CIdempotent
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).CRead-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).CRead-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).CRead-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.CRead-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).CRead-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).CRead-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.CRead-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).CRead-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).CRead-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).DRead-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).CRead-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).CRead-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).CRead-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).CRead-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).CRead-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).CRead-only
List the org's Stripe invoices (never 500s — empty on a Stripe hiccup).
Inputs: x-api-key, limit.
billing.topupInvoke Billing TopupAIdempotent
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.federated_searchSearch every data source covering the AOI in one query (merged, type-tagged).DRead-only
Search every data source covering the AOI in one query (merged, type-tagged).
Inputs: x-api-key, bbox, collections, data_types, +7 more. Returns: features, numberReturned, sources, type
catalog.granule_pointsExtract a 3D point cloud (lon/lat/elev/attribute) from a GEDI or ICESat-2 granule.CRead-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).CRead-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).CRead-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).CRead-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.CRead-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).CRead-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).CRead-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).CRead-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).CRead-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).CRead-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).CRead-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.CRead-only
List catalog vendors + host⇄pricing-vendor identifiers.
Inputs: _empty (required), x-api-key.
catalog.viz.landsatList available Landsat visualizations.DRead-only
List available Landsat visualizations.
Inputs: vizlistinput (required), x-api-key.
catalog.viz.naipList available NAIP visualizations.CRead-only
List available NAIP visualizations.
Inputs: vizlistinput (required), x-api-key.
clip.area.metadataCapture-date metadata for a clip area.CRead-only
Capture-date metadata for a clip area.
Inputs: area (required), x-api-key.
clip.area.mosaicsList mosaic types for a clip area.CRead-only
List mosaic types for a clip area.
Inputs: area (required), x-api-key.
clip.areas.listList delivery-bucket clip areas.CRead-only
List delivery-bucket clip areas.
Inputs: _empty (required), x-api-key.
clip.create_from_itemInvoke Clip Create From ItemAIdempotent
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.CRead-only
List downloadable clip files for a job.
Inputs: job_id (required), x-api-key.
clip.job.getGet a single clip job by id.CRead-only
Get a single clip job by id.
Inputs: job_id (required), x-api-key.
clip.jobs.listList clip jobs for an organization.CRead-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.CRead-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).CRead-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).CRead-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.DRead-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).CDestructive
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.CRead-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.CRead-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.CRead-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.CRead-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.CRead-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.CRead-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).CDestructive
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).CRead-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).CRead-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.CRead-only
Get a single catalog collection by name.
Inputs: collection_name (required), x-api-key.
glossary.collections.listList catalog collections (provider-compatible, paged).CRead-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.CRead-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).CRead-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.CRead-only
Get a single catalog provider by name.
Inputs: provider_name (required), x-api-key.
glossary.providers.listList catalog providers (PRODUCER/HOST, paged).CRead-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).CDestructive
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.CRead-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.DRead-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.CRead-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.BRead-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.CRead-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.BRead-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).CRead-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).CRead-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).CRead-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.CRead-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.DRead-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).CRead-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).CRead-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.CRead-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 PlaceBIdempotent
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.CIdempotent
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.CRead-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).CRead-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).DRead-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).CRead-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).CRead-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).DRead-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).CRead-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).DIdempotent
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).CRead-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.CRead-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).CRead-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).DRead-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).CRead-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).DRead-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 PlaceBIdempotent
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).CRead-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).CRead-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.CRead-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.CRead-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.CRead-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.DDestructive
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.CRead-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.DRead-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).DRead-only
Get one process description (public).
Inputs: process_id (required), x-api-key.
processing.catalog.listList available processes (OGC process catalog, public).CRead-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).CRead-only
Validate process inputs (provider returns empty body on success).
Inputs: process_id (required), x-api-key, inputs.
processing.createInvoke Processing CreateAIdempotent
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 DispatchBIdempotent
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.CIdempotent
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).CIdempotent
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).CRead-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).CRead-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).CRead-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).CRead-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).CRead-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).CRead-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).CDestructive
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).CDestructive
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).CRead-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
stac.collections.listList STAC Collections owned by the caller's organization (provider-compatible).CRead-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.DRead-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).BRead-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.CRead-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.CRead-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).CDestructive
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.CRead-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.CRead-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
Scored across 188 tools
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.
All tools follow a consistent dot-separated prefix convention (domain.subdomain.action) with verb_noun patterns. No mixing of naming styles or unpredictable patterns.
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.
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
Related MCP Connectors
Geospatial AI MCP server — satellite imagery, embeddings, weather, GNS governance
Hosted MCP server for live public-data APIs and Skills for AI agents.
Autopilot MCP server for GEO analyses, reports, content, audits, memories and agents.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server for interacting with Google Earth Engine, enabling geospatial analysis such as dataset visualization, statistics computation, and search via AI assistants.16MIT
- AlicenseAqualityDmaintenanceMCP 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.655 npmMIT
- AlicenseNot gradedqualityDmaintenanceA 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 PyPIBSD 2-Clause "Simplified"
- AlicenseNot gradedqualityAmaintenanceAn 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.22BSD 3-Clause