epwforge-mcp

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

사용해야 할까요

품질 및 안전성

A
설명 품질
100%
스키마 완전성
95%
이름 품질
93%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~5,512토큰 (도구 정의)
~8.1 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 4.31%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "epwforge-mcp": {
      "command": "uvx",
      "args": [
        "epwforge-mcp"
      ]
    }
  }
}

실행 가능한 패키지

pypiepwforge-mcp0.3.1stdio

원격 엔드포인트

https://epwforge.com/api/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (6)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢find_station(query, lat, lon, country, site_elevation_m, ...)

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.

입력 스키마

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Search by city / state (case-insensitive partial match)"
    },
    "lat": {
      "type": "number",
      "minimum": -90,
      "maximum": 90,
      "description": "Latitude — when set, results sorted by proximity"
    },
    "lon": {
      "type": "number",
      "minimum": -180,
      "maximum": 180
    },
    "country": {
      "type": "string",
      "description": "ISO 3-letter country code filter, e.g. 'USA', 'GBR'"
    },
    "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."
    },
    "max_results": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "description": "Max stations (default: 10)"
    },
    "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."
    },
    "ssp": {
      "type": "string",
      "enum": [
        "ssp126",
        "ssp245",
        "ssp370",
        "ssp585"
      ],
      "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": {
      "type": "integer",
      "enum": [
        2030,
        2035,
        2040,
        2045,
        2050,
        2060,
        2070,
        2080,
        2090,
        2100
      ],
      "description": "Future horizon (only used with include_climate_deltas)"
    },
    "percentile": {
      "type": "integer",
      "enum": [
        5,
        10,
        25,
        50,
        75,
        90,
        95
      ],
      "description": "Warming percentile (only used with include_climate_deltas, default 50)"
    }
  }
}
🟢analyze_weather(url, urls, config, compact, include_full_ashrae, ...)

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, dashboards, or when chaining many calls; full when you need monthly arrays / peak days / full ASHRAE. Optional `include_full_ashrae` adds ASHRAE 0.4/1/2% cooling + 99.6/99% heating design conditions with mean coincident dewpoint. Optional `include_improbability` (config mode) adds a stress-test score. Optional `include_idf` adds ready-to-paste EnergyPlus SizingPeriod:DesignDay objects. Optional `units` ('imperial' default | 'metric'). **Presentation: when calling with `urls` (multiple files), the response includes a `comparisons` array — render it as a markdown table to the user. Lead with the headline delta, not the raw data.** No auth required; no credits charged.

입력 스키마

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "EPW URL to analyze (single file)"
    },
    "urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 2,
      "maxItems": 10,
      "description": "Multiple EPW URLs for comparison (first = baseline). Max 10."
    },
    "config": {
      "type": "object",
      "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.",
      "properties": {
        "lat": {
          "type": "number",
          "description": "Latitude, decimal degrees",
          "minimum": -90,
          "maximum": 90
        },
        "lon": {
          "type": "number",
          "description": "Longitude, decimal degrees",
          "minimum": -180,
          "maximum": 180
        },
        "basis": {
          "type": "string",
          "enum": [
            "tmy",
            "amy"
          ],
          "description": "Weather file basis (default: tmy)"
        },
        "amy_year": {
          "type": "integer",
          "description": "Year for AMY basis"
        },
        "ssp": {
          "type": "string",
          "enum": [
            "ssp126",
            "ssp245",
            "ssp370",
            "ssp585"
          ],
          "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."
        },
        "year": {
          "type": "integer",
          "enum": [
            2030,
            2035,
            2040,
            2045,
            2050,
            2060,
            2070,
            2080,
            2090,
            2100
          ],
          "description": "Future horizon"
        },
        "percentile": {
          "type": "integer",
          "enum": [
            5,
            10,
            25,
            50,
            75,
            90,
            95
          ],
          "description": "Warming percentile (default: 50)"
        },
        "uhi": {
          "type": "string",
          "enum": [
            "none",
            "suburban",
            "urban",
            "dense_urban"
          ],
          "description": "Urban Heat Island preset"
        },
        "events": {
          "type": "string",
          "description": "Comma-separated events. Valid: heatwave, coldsnap, hothumid, coldwindy. Pairs auto-compound (heat+humid, cold+wind)."
        },
        "event_duration": {
          "type": "integer",
          "minimum": 3,
          "maximum": 30,
          "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": {
          "type": "string",
          "description": "Per-event \"type:1-7\" intensity (1-10 with stress_test=true). 5 = typical extreme, 7 = severe ~50-yr return."
        },
        "intensity_auto": {
          "type": "boolean",
          "description": "Auto-fill unspecified intensities from IPCC AR6 (default: true)"
        },
        "smoke": {
          "type": "boolean",
          "description": "Enable wildfire smoke overlay"
        },
        "smoke_intensity": {
          "type": "integer",
          "minimum": 1,
          "maximum": 10,
          "description": "Smoke severity 1-10 → peak AOD 0.1-6.0"
        },
        "smoke_duration": {
          "type": "integer",
          "minimum": 3,
          "maximum": 30,
          "description": "Smoke days (3-30, default: 7)"
        },
        "tmy_period": {
          "type": "string",
          "enum": [
            "full",
            "2011-2025",
            "2009-2023",
            "2007-2021",
            "2004-2018"
          ],
          "description": "TMYx vintage. Default 2011-2025."
        }
      },
      "required": [
        "lat",
        "lon"
      ]
    },
    "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_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."
    },
    "include_idf": {
      "type": "boolean",
      "description": "Add ready-to-paste EnergyPlus SizingPeriod:DesignDay IDF objects to the response. AEC-facing. Ignored when compact=true."
    },
    "units": {
      "type": "string",
      "enum": [
        "imperial",
        "metric"
      ],
      "description": "Output units (default: imperial). When 'metric', temperatures are °C, wind m/s, precip mm, distance km/m."
    }
  }
}
🟡chart_weather(url, urls, config, chart_type, resolution, ...)

Render an SVG chart from EPW data. Eight chart types: `diurnal` (~10 KB, monthly hourly profile), `temp_carpet` (heatmap of hour × day-of-year — ~30 KB preview / ~150 KB full), `wind_rose` (~12 KB, polar bars by direction × speed), `monthly_boxplot` (~6 KB, Q1/median/Q3 + whiskers per month), `utci_carpet` (~90 KB, outdoor heat-stress hour × day, colored by UTCI category — Bröde 2012, shaded Tmrt), `economizer_carpet` (~90 KB, air-side economizer free / integrated / locked-out hour × day under ASHRAE 90.1 high-limit), `pv_tilt_azimuth` (~60 KB, annual PV generation across full tilt × azimuth space, isotropic-sky POA at lat from EPW header — optimum orientation marked), `solar_under_events` (~12 KB, weekly GHI of the modified scenario vs the no-overlay reference; bands color event-affected weeks. Requires `config` — server runs the pipeline twice, with and without overlays), `comparison` (~10 KB, design-condition deltas across EPWs). Accepts `url` (single), `urls` (2+ for comparison), or `config` (synthesize on the fly). Config mode is anon-safe — runs pipeline, returns SVG only. No auth required. **Token budget**: SVGs are returned inline by default. Large outputs (>50 KB) auto-upload to Blob storage (when configured) and return a URL instead, keeping your context lean. Always check `svg_size_kb` in the response. **Presentation: when handing the chart to the user, just link or embed it — don't narrate what's in it. Let the chart speak.**

입력 스키마

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "EPW URL (single-EPW charts: diurnal, temp_carpet, wind_rose, monthly_boxplot, utci_carpet, economizer_carpet, pv_tilt_azimuth)"
    },
    "urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 2,
      "maxItems": 10,
      "description": "EPW URLs for chart_type=comparison (first = baseline)"
    },
    "config": {
      "type": "object",
      "description": "Synthesize an EPW and chart it. Same params as generate_weather_file. SVG only — no file delivery.",
      "properties": {
        "lat": {
          "type": "number",
          "description": "Latitude, decimal degrees",
          "minimum": -90,
          "maximum": 90
        },
        "lon": {
          "type": "number",
          "description": "Longitude, decimal degrees",
          "minimum": -180,
          "maximum": 180
        },
        "basis": {
          "type": "string",
          "enum": [
            "tmy",
            "amy"
          ],
          "description": "Weather file basis (default: tmy)"
        },
        "amy_year": {
          "type": "integer",
          "description": "Year for AMY basis"
        },
        "ssp": {
          "type": "string",
          "enum": [
            "ssp126",
            "ssp245",
            "ssp370",
            "ssp585"
          ],
          "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."
        },
        "year": {
          "type": "integer",
          "enum": [
            2030,
            2035,
            2040,
            2045,
            2050,
            2060,
            2070,
            2080,
            2090,
            2100
          ],
          "description": "Future horizon"
        },
        "percentile": {
          "type": "integer",
          "enum": [
            5,
            10,
            25,
            50,
            75,
            90,
            95
          ],
          "description": "Warming percentile (default: 50)"
        },
        "uhi": {
          "type": "string",
          "enum": [
            "none",
            "suburban",
            "urban",
            "dense_urban"
          ],
          "description": "Urban Heat Island preset"
        },
        "events": {
          "type": "string",
          "description": "Comma-separated events. Valid: heatwave, coldsnap, hothumid, coldwindy. Pairs auto-compound (heat+humid, cold+wind)."
        },
        "event_duration": {
          "type": "integer",
          "minimum": 3,
          "maximum": 30,
          "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": {
          "type": "string",
          "description": "Per-event \"type:1-7\" intensity (1-10 with stress_test=true). 5 = typical extreme, 7 = severe ~50-yr return."
        },
        "intensity_auto": {
          "type": "boolean",
          "description": "Auto-fill unspecified intensities from IPCC AR6 (default: true)"
        },
        "smoke": {
          "type": "boolean",
          "description": "Enable wildfire smoke overlay"
        },
        "smoke_intensity": {
          "type": "integer",
          "minimum": 1,
          "maximum": 10,
          "description": "Smoke severity 1-10 → peak AOD 0.1-6.0"
        },
        "smoke_duration": {
          "type": "integer",
          "minimum": 3,
          "maximum": 30,
          "description": "Smoke days (3-30, default: 7)"
        },
        "tmy_period": {
          "type": "string",
          "enum": [
            "full",
            "2011-2025",
            "2009-2023",
            "2007-2021",
            "2004-2018"
          ],
          "description": "TMYx vintage. Default 2011-2025."
        }
      },
      "required": [
        "lat",
        "lon"
      ]
    },
    "chart_type": {
      "type": "string",
      "enum": [
        "diurnal",
        "temp_carpet",
        "wind_rose",
        "monthly_boxplot",
        "utci_carpet",
        "economizer_carpet",
        "pv_tilt_azimuth",
        "solar_under_events",
        "comparison"
      ],
      "description": "Default: diurnal"
    },
    "resolution": {
      "type": "string",
      "enum": [
        "preview",
        "full"
      ],
      "description": "temp_carpet only. 'preview' (default) ~30 KB with 32 color buckets — visually identical at typical render sizes. 'full' ~150 KB with per-cell rgb() — use only when saving to file or when you specifically need exact color fidelity."
    },
    "econ_mode": {
      "type": "string",
      "enum": [
        "drybulb",
        "enthalpy"
      ],
      "description": "economizer_carpet only. 'drybulb' (default) limits OA by Tdb; 'enthalpy' limits by moist-air enthalpy — more honest in humid climates (captures latent load)."
    },
    "econ_high_limit_f": {
      "type": "number",
      "description": "economizer_carpet only. ASHRAE 90.1 high-limit shutoff. Defaults: 75°F (drybulb mode) or 28 BTU/lb (enthalpy mode)."
    },
    "econ_supply_air_f": {
      "type": "number",
      "description": "economizer_carpet only. Supply-air temperature setpoint (°F). Default 55."
    },
    "pv_tilt": {
      "type": "number",
      "description": "pv_tilt_azimuth only. Optional — marks the user's planned tilt (deg, 0=horizontal) on the heatmap alongside the optimum."
    },
    "pv_azimuth": {
      "type": "number",
      "description": "pv_tilt_azimuth only. Optional — marks the user's planned compass azimuth (deg, 0=N, 180=S) on the heatmap."
    }
  }
}
🟢explore_design_conditions(lat, lon, ssp, year, percentile, ...)

Interactive single-site design-conditions explorer. Returns full ASHRAE design conditions + diurnal chart for the requested scenario. In MCP Apps-capable hosts (Claude Desktop, ChatGPT, VS Code, Goose), the response renders as a widget with sliders for SSP / year / percentile / UHI — dragging a slider re-calls this tool live. Use when a user wants to interactively tune a single site. For multi-site comparison, use analyze_weather(urls=[...]) instead. Defaults to present-day TMY (no morph) — pass ssp+year for future scenarios. P75 default percentile is design-realistic; P50 underestimates the tail. No auth required.

입력 스키마

{
  "type": "object",
  "properties": {
    "lat": {
      "type": "number",
      "minimum": -90,
      "maximum": 90,
      "description": "Latitude, decimal degrees"
    },
    "lon": {
      "type": "number",
      "minimum": -180,
      "maximum": 180,
      "description": "Longitude, decimal degrees"
    },
    "ssp": {
      "type": "string",
      "enum": [
        "ssp126",
        "ssp245",
        "ssp370",
        "ssp585"
      ],
      "description": "CMIP6 emission scenario. Omit for present-day TMY. ssp370 is the recommended high-end; ssp585 (SSP5-8.5) is an opt-in extreme stress-test pathway for worst-case analysis."
    },
    "year": {
      "type": "integer",
      "enum": [
        2030,
        2035,
        2040,
        2045,
        2050,
        2060,
        2070,
        2080,
        2090,
        2100
      ],
      "description": "Future horizon. Pair with ssp."
    },
    "percentile": {
      "type": "integer",
      "minimum": 5,
      "maximum": 95,
      "description": "Warming percentile. P75 design-realistic; P50 median."
    },
    "uhi": {
      "type": "string",
      "enum": [
        "none",
        "suburban",
        "urban",
        "dense_urban"
      ],
      "description": "Urban Heat Island preset"
    },
    "allow_custom_location": {
      "type": "boolean",
      "description": "Required when no OneBuilding station within 50 km"
    }
  },
  "required": [
    "lat",
    "lon"
  ]
}
🟢generate_weather_file(lat, lon, basis, amy_year, ssp, ...)

Generate and deliver an EPW or DDY file. A paid tool — charges credits per call: 1 for a single file, 1 per scenario for a scenarios batch (max 10), 10 for a per-model CMIP6 ensemble. Requires auth (Bearer API key or OAuth). Credits come from a Forge pass ($9.99/wk = 2 non-expiring credits, or $99/yr) or a top-up pack; see the epwforge://catalog/pricing resource. No account? Buy a fixed-price guest bundle — see preview_forge_bundle. For free analysis without credits, use analyze_weather or chart_weather on a real published EPW URL.

입력 스키마

{
  "type": "object",
  "properties": {
    "lat": {
      "type": "number",
      "description": "Latitude, decimal degrees",
      "minimum": -90,
      "maximum": 90
    },
    "lon": {
      "type": "number",
      "description": "Longitude, decimal degrees",
      "minimum": -180,
      "maximum": 180
    },
    "basis": {
      "type": "string",
      "enum": [
        "tmy",
        "amy"
      ],
      "description": "Weather file basis (default: tmy)"
    },
    "amy_year": {
      "type": "integer",
      "description": "Year for AMY basis"
    },
    "ssp": {
      "type": "string",
      "enum": [
        "ssp126",
        "ssp245",
        "ssp370",
        "ssp585"
      ],
      "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."
    },
    "year": {
      "type": "integer",
      "enum": [
        2030,
        2035,
        2040,
        2045,
        2050,
        2060,
        2070,
        2080,
        2090,
        2100
      ],
      "description": "Future horizon"
    },
    "percentile": {
      "type": "integer",
      "enum": [
        5,
        10,
        25,
        50,
        75,
        90,
        95
      ],
      "description": "Warming percentile (default: 50)"
    },
    "uhi": {
      "type": "string",
      "enum": [
        "none",
        "suburban",
        "urban",
        "dense_urban"
      ],
      "description": "Urban Heat Island preset"
    },
    "events": {
      "type": "string",
      "description": "Comma-separated events. Valid: heatwave, coldsnap, hothumid, coldwindy. Pairs auto-compound (heat+humid, cold+wind)."
    },
    "event_duration": {
      "type": "integer",
      "minimum": 3,
      "maximum": 30,
      "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": {
      "type": "string",
      "description": "Per-event \"type:1-7\" intensity (1-10 with stress_test=true). 5 = typical extreme, 7 = severe ~50-yr return."
    },
    "intensity_auto": {
      "type": "boolean",
      "description": "Auto-fill unspecified intensities from IPCC AR6 (default: true)"
    },
    "smoke": {
      "type": "boolean",
      "description": "Enable wildfire smoke overlay"
    },
    "smoke_intensity": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10,
      "description": "Smoke severity 1-10 → peak AOD 0.1-6.0"
    },
    "smoke_duration": {
      "type": "integer",
      "minimum": 3,
      "maximum": 30,
      "description": "Smoke days (3-30, default: 7)"
    },
    "tmy_period": {
      "type": "string",
      "enum": [
        "full",
        "2011-2025",
        "2009-2023",
        "2007-2021",
        "2004-2018"
      ],
      "description": "TMYx vintage. Default 2011-2025."
    },
    "format": {
      "type": "string",
      "enum": [
        "epw",
        "ddy"
      ],
      "description": "Output format (default: epw)"
    },
    "ensemble": {
      "type": "boolean",
      "description": "Generate a per-model CMIP6 ensemble (~20 EPWs, one per climate model). Costs 10 credits. Requires ssp + year."
    },
    "scenarios": {
      "type": "array",
      "maxItems": 10,
      "description": "Batch mode — array of configs, each generated in parallel. Same shape as the top-level config. When set, top-level config params are ignored. Costs 1 credit per scenario (up to 10).",
      "items": {
        "type": "object",
        "properties": {
          "lat": {
            "type": "number",
            "description": "Latitude, decimal degrees",
            "minimum": -90,
            "maximum": 90
          },
          "lon": {
            "type": "number",
            "description": "Longitude, decimal degrees",
            "minimum": -180,
            "maximum": 180
          },
          "basis": {
            "type": "string",
            "enum": [
              "tmy",
              "amy"
            ],
            "description": "Weather file basis (default: tmy)"
          },
          "amy_year": {
            "type": "integer",
            "description": "Year for AMY basis"
          },
          "ssp": {
            "type": "string",
            "enum": [
              "ssp126",
              "ssp245",
              "ssp370",
              "ssp585"
            ],
            "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."
          },
          "year": {
            "type": "integer",
            "enum": [
              2030,
              2035,
              2040,
              2045,
              2050,
              2060,
              2070,
              2080,
              2090,
              2100
            ],
            "description": "Future horizon"
          },
          "percentile": {
            "type": "integer",
            "enum": [
              5,
              10,
              25,
              50,
              75,
              90,
              95
            ],
            "description": "Warming percentile (default: 50)"
          },
          "uhi": {
            "type": "string",
            "enum": [
              "none",
              "suburban",
              "urban",
              "dense_urban"
            ],
            "description": "Urban Heat Island preset"
          },
          "events": {
            "type": "string",
            "description": "Comma-separated events. Valid: heatwave, coldsnap, hothumid, coldwindy. Pairs auto-compound (heat+humid, cold+wind)."
          },
          "event_duration": {
            "type": "integer",
            "minimum": 3,
            "maximum": 30,
            "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": {
            "type": "string",
            "description": "Per-event \"type:1-7\" intensity (1-10 with stress_test=true). 5 = typical extreme, 7 = severe ~50-yr return."
          },
          "intensity_auto": {
            "type": "boolean",
            "description": "Auto-fill unspecified intensities from IPCC AR6 (default: true)"
          },
          "smoke": {
            "type": "boolean",
            "description": "Enable wildfire smoke overlay"
          },
          "smoke_intensity": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10,
            "description": "Smoke severity 1-10 → peak AOD 0.1-6.0"
          },
          "smoke_duration": {
            "type": "integer",
            "minimum": 3,
            "maximum": 30,
            "description": "Smoke days (3-30, default: 7)"
          },
          "tmy_period": {
            "type": "string",
            "enum": [
              "full",
              "2011-2025",
              "2009-2023",
              "2007-2021",
              "2004-2018"
            ],
            "description": "TMYx vintage. Default 2011-2025."
          },
          "label": {
            "type": "string"
          }
        },
        "required": [
          "lat",
          "lon"
        ]
      }
    },
    "stress_test": {
      "type": "boolean",
      "description": "Unlock intensity 8-10. Default false."
    },
    "include_ddy": {
      "type": "boolean",
      "description": "When format=epw, also include the matching DDY in the response (single-file only)."
    }
  },
  "required": [
    "lat",
    "lon"
  ]
}
⚪preview_forge_bundle(bundle_id, lat, lon, location)

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.

입력 스키마

{
  "type": "object",
  "properties": {
    "bundle_id": {
      "type": "string",
      "enum": [
        "carbon",
        "titanium",
        "damascus"
      ],
      "description": "Which bundle to preview."
    },
    "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'."
    }
  },
  "required": [
    "bundle_id"
  ]
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 6개
검증됨버전이 기록되지 않음도구 6개