Is the Guzz Labs Epwforge MCP server down?

mcp-registry/io.github.guzz-labs/epwforge-mcp · v0.5.1

down
Last checked 2026-10-23 05:08 UTC · handshake 87ms

As of 2026-10-23 05:08 UTC, the Guzz Labs Epwforge MCP server is down with a Glimind reliability score of 38/100 (grade F). Over the last 30 days it answered 99.8% of Glimind's liveness checks. It had 2 outages in 90 days, with a median recovery of 4 minutes.

uptime (30d checks)
99.8%
checks observed
4,310
outages (90d)
2
tools
6

EPW/DDY weather files - TMY/AMY/CMIP6 morphing, UHI, events, smoke. 3 of 4 tools anon-free.

Point your MCP client at this streamable-http endpoint: https://epwforge.com/api/mcp

Agent-readiness: D (65/100)

D (65/100): 1 error(s), 3 warning(s) across 6 tool(s); ~5,434 tokens of tool definitions.
Scores higher than 1% of 15,606 MCP servers Glimind has audited.
Its tool list costs an agent ~5,434 tokens per session — more than 60% of servers.
74 → 75 since 2026-10-17
no tool-poisoning patterns
Schemas100
Descriptions78
Safety hints30
Token cost65
Client compatibility70
Protocol100
Reliability0
Stability100

What to fix (5)

The endpoint did not complete an MCP handshake.

Check the URL, TLS certificate and that the server answers a JSON-RPC "initialize" POST. How to fix →

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

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,358 tokens every session. How to fix →

Tools: generate_weather_file, chart_weather, analyze_weather · saves ~2,358 tokens/session

6 of 6 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: analyze_weather, chart_weather, explore_design_conditions, find_station, generate_weather_file and 1 more

1 parameter(s) across 1 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: find_station

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 →

Auto-fix: 3 corrected tool definitions

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

analyze_weather 1 change
{
  "name": "analyze_weather",
  "description": "Compute design conditions, HDD/CDD, monthly stats, and peak heating/cooling days for one or more EPW files. Accepts a `url` (existing EPW), `urls` (compare 2+), or `config` (synthesize on the fly with morphing/UHI/events/smoke). Config mode runs the full generation pipeline server-side but returns only stats — never the EPW content. **Token-saver: pass `compact: true` to get a ~10-field headline response (~100 tokens) instead of the full ~800-token payload.** Use compact for sanity-checking, das",
  "inputSchema": {
    "type": "object",
    "properties": {
      "url": {
        "type": "string",
        "description": "EPW URL to analyze (single file)"
      },
      "urls": {
        "type": "array",
        "items": {
          "type": "string"
        },
        "maxItems": 10,
        "minItems": 2,
        "description": "Multiple EPW URLs for comparison (first = baseline). Max 10."
      },
      "units": {
        "enum": [
          "imperial",
          "metric"
        ],
        "type": "string",
        "description": "Output units (default: imperial). When 'metric', temperatures are °C, wind m/s, precip mm, distance km/m."
      },
      "config": {
        "type": "object",
        "required": [
          "lat",
          "lon"
        ],
        "properties": {
          "lat": {
            "type": "number",
            "maximum": 90,
            "minimum": -90,
            "description": "Latitude, decimal degrees"
          },
          "lon": {
            "type": "number",
            "maximum": 180,
            "minimum": -180,
            "description": "Longitude, decimal degrees"
          },
          "ssp": {
            "enum": [
              "ssp126",
              "ssp245",
              "ssp370",
              "ssp585"
            ],
            "type": "string",
            "description": "CMIP6 emission scenario. ssp370 is the recommended high-end for design; ssp585 (SSP5-8.5) is an opt-in extreme stress-test pathway (~4.4°C, low likelihood per IPCC AR6 / CMIP7) for worst-case analysis."
          },
          "uhi": {
            "enum": [
              "none",
              "suburban",
              "urban",
              "dense_urban"
            ],
            "type": "string",
            "description": "Urban Heat Island preset"
          },
          "year": {
            "enum": [
              2030,
              2035,
              2040,
              2045,
              2050,
              2060,
              2070,
              2080,
              2090,
              2100
            ],
            "type": "integer",
            "description": "Future horizon"
          },
          "basis": {
            "enum": [
              "tmy",
              "amy"
            ],
            "type": "string",
            "description": "Weather file basis (default: tmy)"
          },
          "smoke": {
            "type": "boolean",
            "description": "Enable wildfire smoke overlay"
          },
          "events": {
            "type": "string",
            "description": "Comma-separated events. Valid: heatwave, coldsnap, hothumid, coldwindy. Pairs auto-compound (heat+humid, cold+wind)."
          },
          "amy_year": {
            "type": "integer",
            "description": "Year for AMY basis"
          },
          "intensity": {
            "type": "string",
            "description": "Per-event \"type:1-7\" intensity (1-10 with stress_test=true). 5 = typical extreme, 7 = severe ~50-yr return."
          },
          "percentile": {
            "enum": [
              5,
              10,
              25,
              50,
              75,
              90,
              95
            ],
            "type": "integer",
            "description": "Warming percentile (default: 50)"
          },
          "tmy_period": {
            "enum": [
              "full",
              "2011-2025",
              "2009-2023",
              "2007-2021",
              "2004-2018"
            ],
            "type": "string",
            "description": "TMYx vintage. Default 2011-2025."
          },
          "event_duration": {
            "type": "integer",
            "maximum": 30,
            "minimum": 3,
            "description": "Event length in days (3-30, default 14). **For stress-test scenarios use 14-21 days** — shorter durations don't capture sustained operational impact (charging schedules, occupancy patterns, equipment cycling). 7 days is too short for any design or resilience analysis. Use 7-10 only for transient short-duration events."
          },
          "intensity_auto": {
            "type": "boolean",
            "description": "Auto-fill unspecified intensities from IPCC AR6 (default: true)"
          },
          "smoke_duration": {
            "type": "integer",
            "maximum": 30,
            "minimum": 3,
            "description": "Smoke days (3-30, default: 7)"
          },
          "smoke_intensity": {
            "type": "integer",
            "maximum": 10,
            "minimum": 1,
            "description": "Smoke severity 1-10 → peak AOD 0.1-6.0"
          }
        },
        "description": "Synthesize an EPW server-side and analyze it. Stats only — file never returned. lat + lon required. Same morph/UHI/event params as generate_weather_file."
      },
      "compact": {
        "type": "boolean",
        "description": "Return a ~10-field headline-only response (~100 tokens) instead of the full ~800-token payload. Drops monthly arrays, peak days, n_hours, weather_basis blob. Good for sanity checks, dashboards, batched chained calls. Set to false (default) when you need the full payload."
      },
      "include_idf": {
        "type": "boolean",
        "description": "Add ready-to-paste EnergyPlus SizingPeriod:DesignDay IDF objects to the response. AEC-facing. Ignored when compact=true."
      },
      "include_full_ashrae": {
        "type": "boolean",
        "description": "Add ASHRAE 0.4%/1%/2% cooling DB + 99.6%/99% heating DB design conditions to the response. Free. Ignored when compact=true."
      },
      "include_improbability": {
        "type": "boolean",
        "description": "Add EPWForge's stress-test improbability score (config mode only). Indicates how extreme the synthesized scenario is vs historical baselines."
      }
    }
  },
  "annotations": {
    "readOnlyHint": true
  }
}
find_station 1 change
{
  "name": "find_station",
  "description": "Search the GuzzStations catalog (17,000+ weather stations worldwide, self-hosted mirror of OneBuilding TMYx). Returns matching stations with EPW URLs ready to pass to analyze_weather or chart_weather. Optionally enriches with AMY extreme years (hottest / coldest / most-humid on record) and CMIP6 climate deltas. No auth required.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "lat": {
        "type": "number",
        "maximum": 90,
        "minimum": -90,
        "description": "Latitude — when set, results sorted by proximity"
      },
      "lon": {
        "type": "number",
        "maximum": 180,
        "minimum": -180
      },
      "ssp": {
        "enum": [
          "ssp126",
          "ssp245",
          "ssp370",
          "ssp585"
        ],
        "type": "string",
        "description": "SSP scenario (only used with include_climate_deltas). ssp370 is the recommended high-end; ssp585 (SSP5-8.5) is an opt-in extreme stress-test pathway for worst-case analysis."
      },
      "year": {
        "enum": [
          2030,
          2035,
          2040,
          2045,
          2050,
          2060,
          2070,
          2080,
          2090,
          2100
        ],
        "type": "integer",
        "description": "Future horizon (only used with include_climate_deltas)"
      },
      "query": {
        "type": "string",
        "description": "Search by city / state (case-insensitive partial match)"
      },
      "country": {
        "type": "string",
        "description": "ISO 3-letter country code filter, e.g. 'USA', 'GBR'"
      },
      "percentile": {
        "enum": [
          5,
          10,
          25,
          50,
          75,
          90,
          95
        ],
        "type": "integer",
        "description": "Warming percentile (only used with include_climate_deltas, default 50)"
      },
      "max_results": {
        "type": "integer",
        "maximum": 50,
        "minimum": 1,
        "description": "Max stations (default: 10)"
      },
      "site_elevation_m": {
        "type": "number",
        "description": "Site elevation in metres. Strongly recommended when lat/lon are set: elevation difference predicts whether a station is representative about 3x better than distance does, and supplying it turns the recommendation from a distance guess into a measured call."
      },
      "include_amy_extremes": {
        "type": "boolean",
        "description": "When true and lat+lon are set, also returns the hottest / coldest / most-humid years on record (per ERA5, 1950–present). Useful for picking AMY basis years."
      },
      "include_climate_deltas": {
        "type": "boolean",
        "description": "When true with lat+lon+ssp+year, also returns the monthly CMIP6 delta-T per month and per variable. Lets agents reason about specific shifts before generating files."
      }
    }
  },
  "annotations": {
    "readOnlyHint": true
  }
}
preview_forge_bundle 1 change
{
  "name": "preview_forge_bundle",
  "description": "Preview a fixed-price Forge bundle for a location — the no-account way to buy weather files. Returns the exact scenario breakdown, file count, price, and a purchase link the user opens for guest checkout. Bundles: Carbon (10 scenarios), Titanium (30), Damascus (64); each scenario delivered as EPW + DDY + STAT + PVsyst. Free, no auth, creates no order.",
  "inputSchema": {
    "type": "object",
    "required": [
      "bundle_id"
    ],
    "properties": {
      "lat": {
        "type": "number",
        "description": "Site latitude (optional — for a location-specific summary)."
      },
      "lon": {
        "type": "number",
        "description": "Site longitude."
      },
      "location": {
        "type": "string",
        "description": "Optional human label for the site, e.g. 'Boston, MA'."
      },
      "bundle_id": {
        "enum": [
          "carbon",
          "titanium",
          "damascus"
        ],
        "type": "string",
        "description": "Which bundle to preview."
      }
    }
  },
  "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.guzz-labs/epwforge-mcp"],"email":"[email protected]"}'

Agents: watch_tool({"toolId": "mcp-registry/io.github.guzz-labs/epwforge-mcp"}) 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.guzz-labs%2Fepwforge-mcp.svg)](https://glimind.com/server/mcp-registry%2Fio.github.guzz-labs%2Fepwforge-mcp?ref=badge)
HTML
<a href="https://glimind.com/server/mcp-registry%2Fio.github.guzz-labs%2Fepwforge-mcp?ref=badge"><img src="https://glimind.com/v1/readiness/badge/mcp-registry%2Fio.github.guzz-labs%2Fepwforge-mcp.svg" alt="MCP agent-readiness"></a>
reStructuredText
.. image:: https://glimind.com/v1/readiness/badge/mcp-registry%2Fio.github.guzz-labs%2Fepwforge-mcp.svg
   :target: https://glimind.com/server/mcp-registry%2Fio.github.guzz-labs%2Fepwforge-mcp?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:a738d26460480615…, first seen 2026-10-17, included at leaf 1900 of 55,434. Version history · verify what your client received.

Working alternatives

Tools (6)

Compare: most reliable data servers · most reliable media servers · most reliable search servers · most reliable commerce 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 Guzz Labs Epwforge MCP server down right now?

As of 2026-10-23 05:08 UTC, the Guzz Labs Epwforge MCP server is down with a Glimind reliability score of 38/100 (grade F). Over the last 30 days it answered 99.8% of Glimind's liveness checks. It had 2 outages in 90 days, with a median recovery of 4 minutes.

How many tools does Guzz Labs Epwforge MCP server provide?

Guzz Labs Epwforge MCP server advertises 6 tools, including analyze_weather, chart_weather, explore_design_conditions, find_station, generate_weather_file.

How do I install Guzz Labs Epwforge MCP server?

Point your MCP client at this streamable-http endpoint: https://epwforge.com/api/mcp

Is the Guzz Labs Epwforge MCP server safe to connect to an AI agent?

Glimind scanned all 6 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 Guzz Labs Epwforge 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