geopera-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | Port for the http transport. | |
| MCP_TRANSPORT | No | stdio (default) or http. | stdio |
| GEOPERA_API_URL | No | Geopera API base URL. Default https://api.geopera.com. | https://api.geopera.com |
| GEOPERA_API_TOKEN | Yes | A gpra_ API key or a session token, sent upstream as Authorization: Bearer. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| alerts.acknowledge_eventC | Mark an alert event acknowledged (org-scoped). |
| alerts.create_ruleD | Create an alert rule for the caller's organization. |
| alerts.delete_ruleC | Delete an alert rule (org-scoped). |
| alerts.events.listC | List the caller's organization's alert events (org-scoped, triggered_at desc). |
| alerts.rule.getC | Get a single alert rule by id (org-scoped; 404 cross-org). |
| alerts.rules.listC | List the caller's organization's alert rules (org-scoped). |
| alerts.test_ruleC | Test-evaluate an alert rule against an item without persisting. |
| alerts.update_ruleC | Update an alert rule (org-scoped). |
| analytics.executeC | Run a registered analytics operation (zonal_stats / time_series / change_detection). |
| analytics.index.getC | Detailed info about a single spectral index (+ compatible sensors). |
| analytics.indices.listC | List spectral indices (optionally filtered by category / sensor compatibility). |
| analytics.operations.getD | Detailed capabilities of a single analytics operation. |
| analytics.operations.listC | List all registered analytics operations + their input schemas (discovery). |
| analytics.sensors.listC | List supported sensors and their band mappings. |
| analytics.validate_formulaC | Validate a band-math formula (syntax + required bands) without executing it. |
| api_keys.createB | Mint an organization API key (the secret is returned once). |
| api_keys.listC | List an organization's API keys (metadata only — never the secret). |
| api_keys.revokeD | Revoke an organization API key. |
| assets.deleteC | Delete an asset (file) from an item (item access required). |
| band_formulas.createC | Create a custom band-math formula for the caller's organization (write scope). |
| band_formulas.deleteB | Delete a custom band-math formula (write scope; templates are protected). |
| band_formulas.getC | Get a single custom band-math formula by id (org-scoped; cross-org → 404). |
| band_formulas.listC | List the caller-org's custom band-math formulas (optional category/template filters). |
| band_formulas.updateC | Update a custom band-math formula (write scope; org-scoped). |
| billing.approvals.approveC | Approve a credit purchase and charge the saved card (human approver only). |
| billing.approvals.getC | Get one credit-purchase approval (org-scoped). |
| billing.approvals.listC | List the org's credit-purchase approvals (optionally by status). |
| billing.approvals.rejectC | Reject a pending credit-purchase approval. |
| billing.approvals.requestD | Request approval for a large credit purchase. |
| billing.auto_topup.getC | Read the org's auto-topup settings (enabled=false if unset). |
| billing.credits.balanceC | The org's current credit balance. |
| billing.credits.transactionsC | The org's credit ledger (paged, optionally filtered by reason). |
| billing.deletions.pendingC | List organizations pending deletion (system admin). |
| billing.dlq.list_pendingC | Unresolved tracking-failure DLQ counts, grouped by storage_type + source. |
| billing.enterprise.accrualC | The org's unbilled enterprise post-pay liability (to put on a Xero invoice). |
| billing.free_tier.list_pendingC | Orgs awaiting free-tier approval (the operator review queue). |
| billing.invoices.listD | The org's enterprise invoices (grouped from settled orders). |
| billing.plans.listC | List all available plans with their quota/feature limits (public catalog). |
| billing.reconciliation.detect_driftC | Compute storage-billing drift for one org (no run recorded). |
| billing.reconciliation.list_correctionsC | Audit trail of all drift corrections applied (compliance + support). |
| billing.reconciliation.list_runsC | List reconciliation runs (newest first; filter by org / flagged). |
| billing.set_auto_topupD | Configure automatic top-up (requires a default card when enabling). |
| billing.status.getC | An org's billing status + current usage (org membership required). |
| billing.stripe_invoices.listC | List the org's Stripe invoices (never 500s — empty on a Stripe hiccup). |
| billing.topupA | 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 — |
| catalog.federated_searchD | Search every data source covering the AOI in one query (merged, type-tagged). |
| catalog.granule_pointsC | Extract a 3D point cloud (lon/lat/elev/attribute) from a GEDI or ICESat-2 granule. |
| catalog.image.quicklookC | Resolve + 307-redirect to a scene's quicklook (external host). |
| catalog.image.thumbnailC | Resolve + 307-redirect to a scene's thumbnail (external host). |
| catalog.info.landsatC | Landsat scene metadata (parsed id fields + available visualizations). |
| catalog.info.naipC | NAIP item metadata from the Element84 STAC. |
| catalog.info.sampleC | Sample scene metadata (sensor + on-disk STAC + bands + thumbnail). |
| catalog.info.sentinelC | Sentinel-2 scene metadata (parsed id + live COG info + available visualizations). |
| catalog.provider.samplesC | List sample scenes for a provider (paged). |
| catalog.providers.listC | List on-disk sample-data providers (+ registered sensors). |
| catalog.searchC | Search a commercial-imagery host's catalog (STAC, price-enriched). |
| catalog.sources.listC | List every searchable data source + its collections (the dataset registry). |
| catalog.vendors.listC | List catalog vendors + host⇄pricing-vendor identifiers. |
| catalog.viz.landsatD | List available Landsat visualizations. |
| catalog.viz.naipC | List available NAIP visualizations. |
| clip.area.metadataC | Capture-date metadata for a clip area. |
| clip.area.mosaicsC | List mosaic types for a clip area. |
| clip.areas.listC | List delivery-bucket clip areas. |
| clip.create_from_itemA | 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). |
| clip.job.downloadsC | List downloadable clip files for a job. |
| clip.job.getC | Get a single clip job by id. |
| clip.job.tile_infoC | Tile rendering params for a completed clip job. |
| clip.jobs.listC | List clip jobs for an organization. |
| cog.colormapsC | Curated colormap groups for the frontend picker (bare-dict). |
| cog.formulasC | Predefined spectral-index formula templates (bare-dict, keyed by index id). |
| cog.statisticsD | AOI-scoped percentile statistics for a COG — drives per-AOI colormap rescale. |
| collections.createB | Create an organizing collection within a project (editor/admin required). |
| collections.deleteC | Soft-delete a collection, unlinking its items (project admin required). |
| collections.getC | Get a collection by id within a project. Project member access + belongs-to-project guard. |
| collections.listC | List a project's collections (with item counts). Project member access. |
| collections.updateC | Update a collection's metadata (editor/admin required). |
| eulas.document.getC | Get a single EULA document enriched with the caller's org acceptance. |
| eulas.documents.listC | List an EULA's documents (paged), each enriched with the caller's org acceptance. |
| eulas.getC | Get a single EULA enriched with the caller's org acceptance. |
| eulas.listC | List EULAs (paged), each enriched with the caller's org acceptance. |
| event_subscriptions.createC | Create a webhook subscription for the caller's organization. |
| event_subscriptions.deleteC | Delete a webhook subscription (org-scoped). |
| event_subscriptions.getC | Get a single webhook subscription (org-scoped; secret redacted). |
| event_subscriptions.listC | List the caller's organization's webhook subscriptions (secret redacted). |
| event_subscriptions.testC | Send a test event to a webhook subscription and return the delivery result. |
| event_subscriptions.updateC | Update a webhook subscription (org-scoped). |
| glossary.collections.getC | Get a single catalog collection by name. |
| glossary.collections.listC | List catalog collections (provider-compatible, paged). |
| glossary.data_products.getC | Get a single catalog data product by name. |
| glossary.data_products.listC | List catalog data products (provider-compatible, paged). |
| glossary.providers.getC | Get a single catalog provider by name. |
| glossary.providers.listC | List catalog providers (PRODUCER/HOST, paged). |
| items.createD | Create an item within a project (editor/admin on the project). |
| items.deleteC | Soft-delete an item (admin/editor on the item's project required). |
| items.detect_asset_bandsC | Auto-detect band names for an asset from its reflectance statistics. |
| items.duplicateC | Duplicate an item with its assets + viz profiles (admin/editor on the project). |
| items.getC | Fetch a single catalog item by id. |
| items.get_stacD | Get an item as a full STAC 1.0.0 Feature with embedded assets + links. Item member access. |
| items.lineageC | Get the lineage tree (parents + children) for an item. Item member access. |
| items.listB | List a project's items (optionally filtered by collection). Project member access. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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.