MCP server
Plug HVAC into Claude, ChatGPT, and any MCP agent.
12 tools to read state, control devices, diagnose faults, and reason about psychrometrics — exposed as native MCP. Production-grade auth and audit. Unlock the spec with one email.
Browse tools →Tools
MCP tools the HVAC agent exposes
Each tool is one function call from your LLM. Same auth and audit model as the REST API — write-tools are scope-gated, every action is logged with caller, before/after, and outcome. Unlock to see input/return shapes and the Claude Desktop config.
12 tools across 4 categories · MCP server URL on unlock
list_brandsReadEnumerate supported HVAC, BMS, and home-automation brands
get_brand_capabilitiesReadGet what one brand supports — points, families, integration depth
list_sitesReadList sites the agent has access to
read_device_stateReadCurrent temperature, setpoint, mode, fan, and online status
read_device_historyReadSampled historical telemetry over a time window
set_device_setpointwriteControlWrite a new target temperature, with audit log
set_device_modewriteControlSwitch between heat / cool / auto / off / fan
list_active_faultsDiagnosticOpen fault alarms across your scope
explain_fault_codeDiagnosticGet meaning + suggested action for a brand-specific code
acknowledge_faultwriteDiagnosticAcknowledge a fault and silence re-alarming
site_energy_summaryAnalyticskWh, peak kW, demand kW over a time window
compute_psychrometricsAnalyticsWet-bulb, dew point, enthalpy from temperature + humidity
No tools match — try a different search term.
Tool I/O + connection details
Unlock to see the MCP server URL, the configuration snippet for Claude Desktop and the Anthropic Agent SDK, and full input / return shapes for every tool above. One email unlocks the API reference and the brand pages too.
One email unlocks the whole site.
list_brandsReturns every brand the agent can read or control. Useful when a Claude agent is starting fresh and needs to know what equipment it can integrate.
Input
{ category?: "HVAC" | "HomeAutomation" | "BMS"; status?: "supported" | "beta" | "planned" }Returns
{ brands: { slug; name; category; protocols; status }[] }Example
list_brands({ category: "HVAC", status: "supported" })get_brand_capabilitiesResolves a brand slug to its device families, supported points, and protocol matrix. Use it before deciding whether to attempt a control call against a specific brand.
Input
{ slug: string }Returns
{ brand; deviceFamilies; capabilities; protocols }Example
get_brand_capabilities({ slug: "daikin" })list_sitesEach site is a parent scope. Faults, energy roll-ups, and device queries are typically scoped to a site.
Input
{ limit?: number; cursor?: string }Returns
{ sites: Site[]; nextCursor?: string }Example
list_sites({})read_device_stateNormalized across brands. Claude can ask "what is the conference-room VRV doing?" and get a JSON it can reason over without learning per-brand semantics.
Input
{ deviceId: string }Returns
{ temperature; humidity; setpoint; mode; fanSpeed; status; readAt }Example
read_device_state({ deviceId: "site-3-vrv-conf-12" })read_device_historyReturns time-series data for the requested points. Resolution is auto-selected by window size; ask for explicit resolution if you need it.
Input
{ deviceId; points: string[]; from: ISO8601; to: ISO8601; resolution?: "1m"|"5m"|"1h"|"1d" }Returns
{ points: { name; samples: [t, v][] }[] }Example
read_device_history({ deviceId: "rtu-7", points: ["temperature","setpoint"], from: "2026-05-27T00:00:00Z", to: "2026-05-27T23:59:59Z" })set_device_setpointrequires devices:writeGated by per-device write scope AND your site safety interlocks. Every write is recorded with the calling agent, before/after, reason, and outcome.
Input
{ deviceId; value: number; reason?: string }Returns
{ ok; before; after; appliedAt; auditId }Example
set_device_setpoint({ deviceId: "rtu-7", value: 72, reason: "Pre-cool for 9am occupancy" })set_device_moderequires devices:writeBounded by the device's capabilities. The MCP server validates the mode is supported before calling the brand API; on mismatch returns the allowed mode list.
Input
{ deviceId; mode: "heat"|"cool"|"auto"|"off"|"fan"|"dry" }Returns
{ ok; before; after; appliedAt; auditId }Example
set_device_mode({ deviceId: "rtu-7", mode: "cool" })list_active_faultsSame data that powers /technician-copilot. Use it to triage what needs attention right now, or to compose a daily site-summary email.
Input
{ siteId?: string; severity?: "info"|"warning"|"critical" }Returns
{ faults: Fault[]; nextCursor? }Example
list_active_faults({ severity: "critical" })explain_fault_codeResolves a brand + code to its category, plain-English meaning, severity, and first-checks. The dataset that powers /brands/<slug> fault-code tables, callable from any MCP-aware agent.
Input
{ brand: string; code: string }Returns
{ brand; code; category; meaning; severity; suggestedAction }Example
explain_fault_code({ brand: "daikin", code: "U4" })acknowledge_faultrequires devices:writeStops further notifications for the configured cooldown. Acknowledgement is audit-logged with the calling agent.
Input
{ faultId: string; note?: string }Returns
{ ok; acknowledgedAt; by }Example
acknowledge_fault({ faultId: "f-83210", note: "Tech dispatched, ETA 14:00" })site_energy_summaryAggregates per-device telemetry into a single site energy series. Same series the M&V / IPMVP report generator uses — your numbers and the report's match.
Input
{ siteId; from: ISO8601; to: ISO8601 }Returns
{ kWh; peakKW; demandKW; samples: [t, kW][] }Example
site_energy_summary({ siteId: "store-42", from: "2026-05-01T00:00:00Z", to: "2026-05-31T23:59:59Z" })compute_psychrometricsPure-function helper for agents reasoning about HVAC efficiency levers. Saves the LLM from re-deriving the Tetens/Stull approximations every time it wants to talk about enthalpy.
Input
{ tempF: number; rh: number; pressureKPa?: number }Returns
{ wetBulbF; dewPointF; enthalpyBtuPerLb; humidityRatio }Example
compute_psychrometrics({ tempF: 88, rh: 62 })Claude Desktop config
{
"mcpServers": {
"hvacapi": {
"url": "https://mcp.hvacapi.com",
"headers": { "Authorization": "Bearer $HVACAPI_KEY" }
}
}
}Need more?
Ask about MCP — tools, scopes, or your agent setup.
Bringing this to Claude, ChatGPT, Cursor, or a custom agent? Ask and we'll route you.
Tell us about your agent stack
How it stays out of your way
Secure
Sealed data plane. Per-site auth. Audit log on every setpoint touch.
Runs on the edge
Deploys at the building edge — your data doesn't leave the site to be useful.
BYO LLM
Works with Claude, ChatGPT, and any MCP-compatible client. You pick the brain.