Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,070Paid calls: 1,526Letters: 13Defects: 1,322counted 1 min ago
teppi

Server definition

Hash
sha256:1bee571d92e93fa66dc3523e3cbdc83f3c671d78e7c04dde898d7eaa5602f622
What it is
What a remote MCP server returned when asked what it offers: 6 tools

The blob, as servednamed by its sha256

{ "instructions": null, "tools": [ { "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, 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.", "inputSchema": { "properties": { "compact": { "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.", "type": "boolean" }, "config": { "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": { "amy_year": { "description": "Year for AMY basis", "type": "integer" }, "basis": { "description": "Weather file basis (default: tmy)", "enum": [ "tmy", "amy" ], "type": "string" }, "event_duration": { "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.", "maximum": 30, "minimum": 3, "type": "integer" }, "events": { "description": "Comma-separated events. Valid: heatwave, coldsnap, hothumid, coldwindy. Pairs auto-compound (heat+humid, cold+wind).", "type": "string" }, "intensity": { "description": "Per-event \"type:1-7\" intensity (1-10 with stress_test=true). 5 = typical extreme, 7 = severe ~50-yr return.", "type": "string" }, "intensity_auto": { "description": "Auto-fill unspecified intensities from IPCC AR6 (default: true)", "type": "boolean" }, "lat": { "description": "Latitude, decimal degrees", "maximum": 90, "minimum": -90, "type": "number" }, "lon": { "description": "Longitude, decimal degrees", "maximum": 180, "minimum": -180, "type": "number" }, "percentile": { "description": "Warming percentile (default: 50)", "enum": [ 5, 10, 25, 50, 75, 90, 95 ], "type": "integer" }, "smoke": { "description": "Enable wildfire smoke overlay", "type": "boolean" }, "smoke_duration": { "description": "Smoke days (3-30, default: 7)", "maximum": 30, "minimum": 3, "type": "integer" }, "smoke_intensity": { "description": "Smoke severity 1-10 → peak AOD 0.1-6.0", "maximum": 10, "minimum": 1, "type": "integer" }, "ssp": { "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.", "enum": [ "ssp126", "ssp245", "ssp370", "ssp585" ], "type": "string" }, "tmy_period": { "description": "TMYx vintage. Default 2011-2025.", "enum": [ "full", "2011-2025", "2009-2023", "2007-2021", "2004-2018" ], "type": "string" }, "uhi": { "description": "Urban Heat Island preset", "enum": [ "none", "suburban", "urban", "dense_urban" ], "type": "string" }, "year": { "description": "Future horizon", "enum": [ 2030, 2035, 2040, 2045, 2050, 2060, 2070, 2080, 2090, 2100 ], "type": "integer" } }, "required": [ "lat", "lon" ], "type": "object" }, "include_full_ashrae": { "description": "Add ASHRAE 0.4%/1%/2% cooling DB + 99.6%/99% heating DB design conditions to the response. Free. Ignored when compact=true.", "type": "boolean" }, "include_idf": { "description": "Add ready-to-paste EnergyPlus SizingPeriod:DesignDay IDF objects to the response. AEC-facing. Ignored when compact=true.", "type": "boolean" }, "include_improbability": { "description": "Add EPWForge's stress-test improbability score (config mode only). Indicates how extreme the synthesized scenario is vs historical baselines.", "type": "boolean" }, "units": { "description": "Output units (default: imperial). When 'metric', temperatures are °C, wind m/s, precip mm, distance km/m.", "enum": [ "imperial", "metric" ], "type": "string" }, "url": { "description": "EPW URL to analyze (single file)", "type": "string" }, "urls": { "description": "Multiple EPW URLs for comparison (first = baseline). Max 10.", "items": { "type": "string" }, "maxItems": 10, "minItems": 2, "type": "array" } }, "type": "object" }, "name": "analyze_weather", "outputSchema": null }, { "description": "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.**", "inputSchema": { "properties": { "chart_type": { "description": "Default: diurnal", "enum": [ "diurnal", "temp_carpet", "wind_rose", "monthly_boxplot", "utci_carpet", "economizer_carpet", "pv_tilt_azimuth", "solar_under_events", "comparison" ], "type": "string" }, "config": { "description": "Synthesize an EPW and chart it. Same params as generate_weather_file. SVG only — no file delivery.", "properties": { "amy_year": { "description": "Year for AMY basis", "type": "integer" }, "basis": { "description": "Weather file basis (default: tmy)", "enum": [ "tmy", "amy" ], "type": "string" }, "event_duration": { "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.", "maximum": 30, "minimum": 3, "type": "integer" }, "events": { "description": "Comma-separated events. Valid: heatwave, coldsnap, hothumid, coldwindy. Pairs auto-compound (heat+humid, cold+wind).", "type": "string" }, "intensity": { "description": "Per-event \"type:1-7\" intensity (1-10 with stress_test=true). 5 = typical extreme, 7 = severe ~50-yr return.", "type": "string" }, "intensity_auto": { "description": "Auto-fill unspecified intensities from IPCC AR6 (default: true)", "type": "boolean" }, "lat": { "description": "Latitude, decimal degrees", "maximum": 90, "minimum": -90, "type": "number" }, "lon": { "description": "Longitude, decimal degrees", "maximum": 180, "minimum": -180, "type": "number" }, "percentile": { "description": "Warming percentile (default: 50)", "enum": [ 5, 10, 25, 50, 75, 90, 95 ], "type": "integer" }, "smoke": { "description": "Enable wildfire smoke overlay", "type": "boolean" }, "smoke_duration": { "description": "Smoke days (3-30, default: 7)", "maximum": 30, "minimum": 3, "type": "integer" }, "smoke_intensity": { "description": "Smoke severity 1-10 → peak AOD 0.1-6.0", "maximum": 10, "minimum": 1, "type": "integer" }, "ssp": { "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.", "enum": [ "ssp126", "ssp245", "ssp370", "ssp585" ], "type": "string" }, "tmy_period": { "description": "TMYx vintage. Default 2011-2025.", "enum": [ "full", "2011-2025", "2009-2023", "2007-2021", "2004-2018" ], "type": "string" }, "uhi": { "description": "Urban Heat Island preset", "enum": [ "none", "suburban", "urban", "dense_urban" ], "type": "string" }, "year": { "description": "Future horizon", "enum": [ 2030, 2035, 2040, 2045, 2050, 2060, 2070, 2080, 2090, 2100 ], "type": "integer" } }, "required": [ "lat", "lon" ], "type": "object" }, "econ_high_limit_f": { "description": "economizer_carpet only. ASHRAE 90.1 high-limit shutoff. Defaults: 75°F (drybulb mode) or 28 BTU/lb (enthalpy mode).", "type": "number" }, "econ_mode": { "description": "economizer_carpet only. 'drybulb' (default) limits OA by Tdb; 'enthalpy' limits by moist-air enthalpy — more honest in humid climates (captures latent load).", "enum": [ "drybulb", "enthalpy" ], "type": "string" }, "econ_supply_air_f": { "description": "economizer_carpet only. Supply-air temperature setpoint (°F). Default 55.", "type": "number" }, "pv_azimuth": { "description": "pv_tilt_azimuth only. Optional — marks the user's planned compass azimuth (deg, 0=N, 180=S) on the heatmap.", "type": "number" }, "pv_tilt": { "description": "pv_tilt_azimuth only. Optional — marks the user's planned tilt (deg, 0=horizontal) on the heatmap alongside the optimum.", "type": "number" }, "resolution": { "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.", "enum": [ "preview", "full" ], "type": "string" }, "url": { "description": "EPW URL (single-EPW charts: diurnal, temp_carpet, wind_rose, monthly_boxplot, utci_carpet, economizer_carpet, pv_tilt_azimuth)", "type": "string" }, "urls": { "description": "EPW URLs for chart_type=comparison (first = baseline)", "items": { "type": "string" }, "maxItems": 10, "minItems": 2, "type": "array" } }, "type": "object" }, "name": "chart_weather", "outputSchema": null }, { "description": "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.", "inputSchema": { "properties": { "allow_custom_location": { "description": "Required when no OneBuilding station within 50 km", "type": "boolean" }, "lat": { "description": "Latitude, decimal degrees", "maximum": 90, "minimum": -90, "type": "number" }, "lon": { "description": "Longitude, decimal degrees", "maximum": 180, "minimum": -180, "type": "number" }, "percentile": { "description": "Warming percentile. P75 design-realistic; P50 median.", "maximum": 95, "minimum": 5, "type": "integer" }, "ssp": { "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.", "enum": [ "ssp126", "ssp245", "ssp370", "ssp585" ], "type": "string" }, "uhi": { "description": "Urban Heat Island preset", "enum": [ "none", "suburban", "urban", "dense_urban" ], "type": "string" }, "year": { "description": "Future horizon. Pair with ssp.", "enum": [ 2030, 2035, 2040, 2045, 2050, 2060, 2070, 2080, 2090, 2100 ], "type": "integer" } }, "required": [ "lat", "lon" ], "type": "object" }, "name": "explore_design_conditions", "outputSchema": null }, { "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": { "properties": { "country": { "description": "ISO 3-letter country code filter, e.g. 'USA', 'GBR'", "type": "string" }, "include_amy_extremes": { "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.", "type": "boolean" }, "include_climate_deltas": { "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.", "type": "boolean" }, "lat": { "description": "Latitude — when set, results sorted by proximity", "maximum": 90, "minimum": -90, "type": "number" }, "lon": { "maximum": 180, "minimum": -180, "type": "number" }, "max_results": { "description": "Max stations (default: 10)", "maximum": 50, "minimum": 1, "type": "integer" }, "percentile": { "description": "Warming percentile (only used with include_climate_deltas, default 50)", "enum": [ 5, 10, 25, 50, 75, 90, 95 ], "type": "integer" }, "query": { "description": "Search by city / state (case-insensitive partial match)", "type": "string" }, "site_elevation_m": { "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.", "type": "number" }, "ssp": { "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.", "enum": [ "ssp126", "ssp245", "ssp370", "ssp585" ], "type": "string" }, "year": { "description": "Future horizon (only used with include_climate_deltas)", "enum": [ 2030, 2035, 2040, 2045, 2050, 2060, 2070, 2080, 2090, 2100 ], "type": "integer" } }, "type": "object" }, "name": "find_station", "outputSchema": null }, { "description": "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.", "inputSchema": { "properties": { "amy_year": { "description": "Year for AMY basis", "type": "integer" }, "basis": { "description": "Weather file basis (default: tmy)", "enum": [ "tmy", "amy" ], "type": "string" }, "ensemble": { "description": "Generate a per-model CMIP6 ensemble (~20 EPWs, one per climate model). Costs 10 credits. Requires ssp + year.", "type": "boolean" }, "event_duration": { "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.", "maximum": 30, "minimum": 3, "type": "integer" }, "events": { "description": "Comma-separated events. Valid: heatwave, coldsnap, hothumid, coldwindy. Pairs auto-compound (heat+humid, cold+wind).", "type": "string" }, "format": { "description": "Output format (default: epw)", "enum": [ "epw", "ddy" ], "type": "string" }, "include_ddy": { "description": "When format=epw, also include the matching DDY in the response (single-file only).", "type": "boolean" }, "intensity": { "description": "Per-event \"type:1-7\" intensity (1-10 with stress_test=true). 5 = typical extreme, 7 = severe ~50-yr return.", "type": "string" }, "intensity_auto": { "description": "Auto-fill unspecified intensities from IPCC AR6 (default: true)", "type": "boolean" }, "lat": { "description": "Latitude, decimal degrees", "maximum": 90, "minimum": -90, "type": "number" }, "lon": { "description": "Longitude, decimal degrees", "maximum": 180, "minimum": -180, "type": "number" }, "percentile": { "description": "Warming percentile (default: 50)", "enum": [ 5, 10, 25, 50, 75, 90, 95 ], "type": "integer" }, "scenarios": { "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": { "properties": { "amy_year": { "description": "Year for AMY basis", "type": "integer" }, "basis": { "description": "Weather file basis (default: tmy)", "enum": [ "tmy", "amy" ], "type": "string" }, "event_duration": { "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.", "maximum": 30, "minimum": 3, "type": "integer" }, "events": { "description": "Comma-separated events. Valid: heatwave, coldsnap, hothumid, coldwindy. Pairs auto-compound (heat+humid, cold+wind).", "type": "string" }, "intensity": { "description": "Per-event \"type:1-7\" intensity (1-10 with stress_test=true). 5 = typical extreme, 7 = severe ~50-yr return.", "type": "string" }, "intensity_auto": { "description": "Auto-fill unspecified intensities from IPCC AR6 (default: true)", "type": "boolean" }, "label": { "type": "string" }, "lat": { "description": "Latitude, decimal degrees", "maximum": 90, "minimum": -90, "type": "number" }, "lon": { "description": "Longitude, decimal degrees", "maximum": 180, "minimum": -180, "type": "number" }, "percentile": { "description": "Warming percentile (default: 50)", "enum": [ 5, 10, 25, 50, 75, 90, 95 ], "type": "integer" }, "smoke": { "description": "Enable wildfire smoke overlay", "type": "boolean" }, "smoke_duration": { "description": "Smoke days (3-30, default: 7)", "maximum": 30, "minimum": 3, "type": "integer" }, "smoke_intensity": { "description": "Smoke severity 1-10 → peak AOD 0.1-6.0", "maximum": 10, "minimum": 1, "type": "integer" }, "ssp": { "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.", "enum": [ "ssp126", "ssp245", "ssp370", "ssp585" ], "type": "string" }, "tmy_period": { "description": "TMYx vintage. Default 2011-2025.", "enum": [ "full", "2011-2025", "2009-2023", "2007-2021", "2004-2018" ], "type": "string" }, "uhi": { "description": "Urban Heat Island preset", "enum": [ "none", "suburban", "urban", "dense_urban" ], "type": "string" }, "year": { "description": "Future horizon", "enum": [ 2030, 2035, 2040, 2045, 2050, 2060, 2070, 2080, 2090, 2100 ], "type": "integer" } }, "required": [ "lat", "lon" ], "type": "object" }, "maxItems": 10, "type": "array" }, "smoke": { "description": "Enable wildfire smoke overlay", "type": "boolean" }, "smoke_duration": { "description": "Smoke days (3-30, default: 7)", "maximum": 30, "minimum": 3, "type": "integer" }, "smoke_intensity": { "description": "Smoke severity 1-10 → peak AOD 0.1-6.0", "maximum": 10, "minimum": 1, "type": "integer" }, "ssp": { "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.", "enum": [ "ssp126", "ssp245", "ssp370", "ssp585" ], "type": "string" }, "stress_test": { "description": "Unlock intensity 8-10. Default false.", "type": "boolean" }, "tmy_period": { "description": "TMYx vintage. Default 2011-2025.", "enum": [ "full", "2011-2025", "2009-2023", "2007-2021", "2004-2018" ], "type": "string" }, "uhi": { "description": "Urban Heat Island preset", "enum": [ "none", "suburban", "urban", "dense_urban" ], "type": "string" }, "year": { "description": "Future horizon", "enum": [ 2030, 2035, 2040, 2045, 2050, 2060, 2070, 2080, 2090, 2100 ], "type": "integer" } }, "required": [ "lat", "lon" ], "type": "object" }, "name": "generate_weather_file", "outputSchema": null }, { "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": { "properties": { "bundle_id": { "description": "Which bundle to preview.", "enum": [ "carbon", "titanium", "damascus" ], "type": "string" }, "lat": { "description": "Site latitude (optional — for a location-specific summary).", "type": "number" }, "location": { "description": "Optional human label for the site, e.g. 'Boston, MA'.", "type": "string" }, "lon": { "description": "Site longitude.", "type": "number" } }, "required": [ "bundle_id" ], "type": "object" }, "name": "preview_forge_bundle", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:1bee571d92e93fa66dc3523e3cbdc83f3c671d78e7c04dde898d7eaa5602f622 | sha256sum