Is the Gabrielkasmi Deeppvmapper MCP server down?

mcp-registry/io.github.gabrielkasmi/deeppvmapper · v0.2.0

healthy
Last checked 2026-10-22 22:54 UTC · handshake 437ms

As of 2026-10-22 22:54 UTC, the Gabrielkasmi Deeppvmapper MCP server is up with a Glimind reliability score of 92/100 (grade A). Over the last 30 days it answered 99.9% of Glimind's liveness checks. It had 2 outages in 90 days, with a median recovery of 10 minutes.

uptime (30d checks)
99.9%
checks observed
4,025
outages (90d)
2
tools
21

Open registry of 1.14M+ rooftop-solar detections across France, queryable by natural language.

Install Gabrielkasmi Deeppvmapper MCP server

Add to Cursor Add to VS Code

Claude Code

claude mcp add --transport http gabrielkasmi-deeppvmapper-mcp-server https://zelhliylrlktnasircwp.supabase.co/functions/v1/mcp/mcp

Claude Desktop · Windsurf · Cline (mcpServers JSON)

{
  "mcpServers": {
    "gabrielkasmi-deeppvmapper-mcp-server": {
      "type": "http",
      "url": "https://zelhliylrlktnasircwp.supabase.co/functions/v1/mcp/mcp"
    }
  }
}

Third-party server, listed as discovered. Review its source before installing.

Agent-readiness: C (78/100)

C (78/100): 0 error(s), 3 warning(s) across 17 tool(s); ~7,715 tokens of tool definitions.
Scores higher than 29% of 15,575 MCP servers Glimind has audited.
Its tool list costs an agent ~7,715 tokens per session — more than 65% of servers.
80 → 78 since 2026-10-17
no tool-poisoning patterns
Schemas100
Descriptions82
Safety hints30
Token cost81
Client compatibility70
Protocol100
Reliability100
Stability92

What to fix (5)

3 tool definition(s) exceed ~1,200 tokens each (largest: aggregate_detection_capacity, ~1,437).

Move long reference material out of descriptions (link a doc or expose a resource), drop repeated examples, and collapse large enums. Trimming these to ~600 tokens saves ~2,398 tokens every session. How to fix →

Tools: aggregate_detection_capacity, count_detections, search_detections · saves ~2,398 tokens/session

17 of 17 tool(s) carry no readOnlyHint/destructiveHint annotations.

Annotate read-only tools with {"readOnlyHint": true}. Agents and gateways can then run them without a confirmation prompt, and route around destructive ones. How to fix →

Tools: aggregate_detection_capacity, count_detections, get_community_activity, get_community_activity_in_area, get_data_quality_reference and 12 more

8 parameter(s) across 2 tool(s) have no description.

Add a "description" to each parameter with its format and an example ("ISO 8601 date, e.g. 2026-10-17"). This is the commonest cause of wrong arguments on the first call. How to fix →

Tools: get_community_activity_in_area, get_detections_in_bbox

No tool declares an outputSchema.

Declare outputSchema and return structuredContent (MCP 2025-06-18+). Agents can then parse results without guessing, and chain tools reliably. How to fix →

In the last 30 days: 0 tool(s) removed and 2 schema change(s).

Add new tools or optional parameters instead of renaming or removing; deprecate first (say so in the description) and remove later. Agents cache tool contracts. How to fix →

Auto-fix: 16 corrected tool definitions

Paste-ready definitions with the problems above fixed. Changes marked verify need a human look. 2 tool(s) still need parameter descriptions written by someone who knows the API. All of them as JSON: /v1/readiness/mcp-registry%2Fio.github.gabrielkasmi%2Fdeeppvmapper/fixes

count_detections 1 change
{
  "name": "count_detections",
  "description": "Count detections matching a set of filters, exactly, without downloading rows (fast, no row cap). Use this for \"how many ...\" questions, e.g. \"how many installations have an RNB id?\" -> has_rnb_id=true; \"how many are identified by 2+ sources?\" -> quality_filter=true; \"how many come from OpenStreetMap?\" -> sources_include=[2]. Returns the matching count, the unfiltered registry total and the percentage. Counts are DETECTED systems, not an inventory. Data quality note: this is a detection dataset,",
  "inputSchema": {
    "type": "object",
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "required": [
      "quality_filter",
      "breakdown_rnb_id"
    ],
    "properties": {
      "dpt": {
        "type": "string",
        "description": "French département code, e.g. \"33\"."
      },
      "insee": {
        "type": "string",
        "description": "INSEE commune code."
      },
      "max_kwp": {
        "type": "number",
        "description": "Maximum estimated installed capacity, in kWp."
      },
      "min_kwp": {
        "type": "number",
        "description": "Minimum estimated installed capacity, in kWp."
      },
      "max_tilt": {
        "type": "number",
        "description": "Maximum estimated tilt from horizontal, in degrees."
      },
      "min_tilt": {
        "type": "number",
        "description": "Minimum estimated tilt from horizontal, in degrees."
      },
      "has_rnb_id": {
        "type": "boolean",
        "description": "true = only detections matched to an RNB building identifier (rnb_id not null); false = only detections without one."
      },
      "max_azimuth": {
        "type": "number",
        "description": "Maximum estimated azimuth, degrees clockwise from true north (180 = south)."
      },
      "max_surface": {
        "type": "number",
        "description": "Maximum estimated PV array area, in m²."
      },
      "min_azimuth": {
        "type": "number",
        "description": "Minimum estimated azimuth, degrees clockwise from true north (180 = south)."
      },
      "min_surface": {
        "type": "number",
        "description": "Minimum estimated PV array area, in m²."
      },
      "max_vintages": {
        "type": "integer",
        "maximum": 9007199254740991,
        "description": "Maximum number of imagery vintages (e.g. 1 = seen in a single year only).",
        "exclusiveMinimum": 0
      },
      "min_vintages": {
        "type": "integer",
        "maximum": 9007199254740991,
        "description": "Minimum number of distinct imagery vintages (years) the installation was independently detected in. Use 2+ as a persistence/confidence signal, since a one-off detection in a single vintage is more likely to be a transient artifact.",
        "exclusiveMinimum": 0
      },
      "max_last_seen": {
        "type": "integer",
        "maximum": 9007199254740991,
        "minimum": -9007199254740991,
        "description": "Upper bound on last_seen imagery year."
      },
      "min_last_seen": {
        "type": "integer",
        "maximum": 9007199254740991,
        "minimum": -9007199254740991,
        "description": "Lower bound on last_seen imagery year."
      },
      "has_frpv_proba": {
        "type": "boolean",
        "description": "true = only detections that have an FRPV comparison (frpv_proba not null); false = only those without one. A null frpv_proba means \"no comparison available\", not probability 0."
      },
      "max_first_seen": {
        "type": "integer",
        "maximum": 9007199254740991,
        "minimum": -9007199254740991,
        "description": "Upper bound on first_seen imagery year."
      },
      "min_first_seen": {
        "type": "integer",
        "maximum": 9007199254740991,
        "minimum": -9007199254740991,
        "description": "Earliest imagery year of first detection, lower bound (e.g. 2018). Not an installation date."
      },
      "min_frpv_proba": {
        "type": "number",
        "maximum": 1,
        "minimum": 0,
        "description": "Minimum frpv_proba. The data contract recommends 0.1 as a precision/recall trade-off. Note: detections with a null frpv_proba (no FRPV comparison available) are excluded when this is set; null does not mean probability 0."
      },
      "quality_filter": {
        "type": "boolean",
        "default": false,
        "description": "If true, only include detections identified by 2 OR MORE sources(the `sources` field lists at least two codes, e.g. \"0,1\" = DeepPVMapper pipeline + FRPV reference, \"0,2\" = pipeline + OpenStreetMap). Default false: all detections are included, including those found by a single source (typically the automated pipeline alone)."
      },
      "cross_validated": {
        "type": "boolean",
        "description": "Alias of quality_filter, kept for backward compatibility."
      },
      "sources_include": {
        "type": "array",
        "items": {
          "anyOf": [
            {
              "type": "integer",
              "maximum": 4,
              "minimum": 0
            },
            {
              "type": "string"
            }
          ]
        },
        "description": "Only include detections present in ALL of these sources. Accepts names or codes, case-insensitive: dpvm/deeppvmapper/kasmi (0), frpv/thebault (1), osm/openstreetmap (2), manual/annotation (3), recall (4). Examples: [\"osm\"] = detections that are in OpenStreetMap; [\"dpvm\",\"frpv\"] = present in both DeepPVMapper and FRPV. See get_source_reference for what each source is and where it comes from."
      },
      "breakdown_rnb_id": {
        "type": "boolean",
        "default": false,
        "description": "If true, also return how many of the matching detections do / do not have an rnb_id (ignores has_rnb_id for this breakdown)."
      },
      "false_positive_status": {
        "enum": [
          "flagged",
          "not_flagged",
          "unrecorded"
        ],
        "type": "string",
        "description": "flagged = false_positive is true; not_flagged = false_positive is false; unrecorded = false_positive is null (no status recorded — NOT a confirmed true positive)."
      }
    },
    "additionalProperties": false
  },
  "annotations": {
    "readOnlyHint": true
  }
}
get_community_activity 1 change
{
  "name": "get_community_activity",
  "description": "Get a snapshot of ongoing community contribution activity on the map: how many corrections are currently pending moderation, their breakdown by action type (add / modify / delete), and the most recent submissions (timestamp, action, target). Submitted free-text comments are intentionally excluded from this tool. This reflects unmoderated, unverified user activity, not the registry itself — do not present it as confirmed detection data.",
  "inputSchema": {
    "type": "object",
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "required": [
      "recent_limit"
    ],
    "properties": {
      "recent_limit": {
        "type": "integer",
        "default": 15,
        "maximum": 50,
        "description": "How many of the most recent pending contributions to list.",
        "exclusiveMinimum": 0
      }
    },
    "additionalProperties": false
  },
  "annotations": {
    "readOnlyHint": true
  }
}
get_community_activity_in_area 1 change
{
  "name": "get_community_activity_in_area",
  "description": "Find pending, unmoderated community contributions relevant to a specific area, to answer \"has anyone flagged anything here that is not in the registry yet?\" Two independent filters: dpt finds pending edits/deletions (action=modify/delete) targeting existing detections in that département; a full bounding box (min_lon/min_lat/max_lon/max_lat) finds pending new additions (action=add) whose proposed footprint centroid falls inside it. Combine with get_department_capacity_stats / search_detections /",
  "inputSchema": {
    "type": "object",
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "required": [
      "scan_limit",
      "recent_limit"
    ],
    "properties": {
      "dpt": {
        "type": "string",
        "description": "Filter pending edits/deletions of EXISTING detections (action=modify or delete) to this département. Does not apply to proposed new additions (action=add), which have no département recorded on the pending item itself — use the bbox parameters for those."
      },
      "max_lat": {
        "type": "number"
      },
      "max_lon": {
        "type": "number"
      },
      "min_lat": {
        "type": "number"
      },
      "min_lon": {
        "type": "number"
      },
      "scan_limit": {
        "type": "integer",
        "default": 500,
        "maximum": 2000,
        "description": "How many recent proposed additions (action=add) to scan for a bbox match. Only relevant when all four bbox parameters are given — there is no server-side spatial index on pending items, so matching is done by fetching this many of the most recent ones and checking their centroid against the box.",
        "exclusiveMinimum": 0
      },
      "recent_limit": {
        "type": "integer",
        "default": 30,
        "maximum": 100,
        "description": "Maximum number of matching items to return per category.",
        "exclusiveMinimum": 0
      }
    },
    "additionalProperties": false
  },
  "annotations": {
    "readOnlyHint": true
  }
}

Get alerted

Get an email or webhook when this server's readiness drops by 10+ points, tool-poisoning text appears, or a tool breaks:

curl -X POST https://glimind.com/v1/subscriptions -H 'content-type: application/json' -d '{"tools":["mcp-registry/io.github.gabrielkasmi/deeppvmapper"],"email":"[email protected]"}'

Agents: watch_tool({"toolId": "mcp-registry/io.github.gabrielkasmi/deeppvmapper"}) over MCP.

Passed

Largest tool definitions

Static checks of the advertised tools/list (schema, descriptions, annotations, tool-poisoning patterns, names, size) plus observed protocol, uptime, latency and contract changes. Read-only: no tool is ever called. Weights: schema 15, docs 20, safety 15, efficiency 15, compatibility 15, protocol 5, reliability 10, stability 5. Token counts are estimates (~3.6 characters per token).

Operator? Fix these, then re-check live. Embed the readiness badge:

Markdown
[![MCP agent-readiness](https://glimind.com/v1/readiness/badge/mcp-registry%2Fio.github.gabrielkasmi%2Fdeeppvmapper.svg)](https://glimind.com/server/mcp-registry%2Fio.github.gabrielkasmi%2Fdeeppvmapper?ref=badge)
HTML
<a href="https://glimind.com/server/mcp-registry%2Fio.github.gabrielkasmi%2Fdeeppvmapper?ref=badge"><img src="https://glimind.com/v1/readiness/badge/mcp-registry%2Fio.github.gabrielkasmi%2Fdeeppvmapper.svg" alt="MCP agent-readiness"></a>
reStructuredText
.. image:: https://glimind.com/v1/readiness/badge/mcp-registry%2Fio.github.gabrielkasmi%2Fdeeppvmapper.svg
   :target: https://glimind.com/server/mcp-registry%2Fio.github.gabrielkasmi%2Fdeeppvmapper?ref=badge
   :alt: MCP agent-readiness

Tool-definition log

Glimind records every version of this server's tool definitions in a signed, append-only transparency log. Current manifest sha256:268e2084ee24d596…, first seen 2026-10-18, included at leaf 23502 of 48,613. Version history · verify what your client received.

Tools (21)

Compare: most reliable data servers · most reliable retrieval servers · most reliable knowledge servers · most reliable search servers

Know before your agent calls it

Glimind tells agents whether a server is up right now and how to call it, then fails over to a live alternative when it isn't.

Add Glimind — free, no signup:

Add to Cursor Add to VS Code

Claude Code

claude mcp add --transport http glimind https://glimind.com/mcp

Claude Desktop · Windsurf · Cline (mcpServers JSON)

{
  "mcpServers": {
    "glimind": {
      "type": "http",
      "url": "https://glimind.com/mcp"
    }
  }
}

FAQ

Is the Gabrielkasmi Deeppvmapper MCP server down right now?

As of 2026-10-22 22:54 UTC, the Gabrielkasmi Deeppvmapper MCP server is up with a Glimind reliability score of 92/100 (grade A). Over the last 30 days it answered 99.9% of Glimind's liveness checks. It had 2 outages in 90 days, with a median recovery of 10 minutes.

How many tools does Gabrielkasmi Deeppvmapper MCP server provide?

Gabrielkasmi Deeppvmapper MCP server advertises 21 tools, including aggregate_capacity, aggregate_detection_capacity, check_quality, count_detections, explore_area.

How do I install Gabrielkasmi Deeppvmapper MCP server?

Point your MCP client at this streamable-http endpoint: https://zelhliylrlktnasircwp.supabase.co/functions/v1/mcp/mcp

Is the Gabrielkasmi Deeppvmapper MCP server safe to connect to an AI agent?

Glimind scanned all 17 tool definitions for tool-poisoning patterns — hidden or invisible characters, instructions that override the model, concealment from the user, requests to read credential or MCP config files, conversation exfiltration and cross-tool shadowing — and found none. This checks what the server tells the model, not what its code does; review the source before granting access to sensitive data.

Operator of Gabrielkasmi Deeppvmapper MCP server?

Status page: 90-day uptime, every outage and how long it lasted.

Claim this listing to get the Verified operator marker, a remediation checklist and owner analytics, or embed the live badge from any of the tool pages above. Maintainers: alerts, deploy attestation and monthly reports.

Status is an automated estimate from Glimind's liveness checks (handshake and tool listing only; no tool is ever called) and may lag or differ from your network. Glimind is not affiliated with this server or its operator. Operator? Request a correction or opt out at https://glimind.com/opt-out.

Feedback
Help us improve