Elysia Tools Docs
EN
Language
ZHESPTRUFRDEEN
Back to site
Browse tools

Math & Numbers

Air Changes per Hour (ACH, n = Q/V)

Compute the air change rate (ACH / n) of a room from the outdoor supply airflow Q and the room volume V: n = Q/V (1/h). Three modes: solve ACH (given Q and V), solve airflow (given n and V), or solve volume (given n and Q). Flow in m³/s/m³/h/CFM, volume in m³/ft³/L. Also reports the well-mixed single-zone purge time to reach a target residual fraction ε (default 1%): t = −ln(ε)/n hours.

json· JSON resultOpen tool

Quick start

Call this tool from your code in three languages.

cURL
curl -X POST 'https://api.elysiatools.com/en/api/tools/air-changes-per-hour' \
  -H 'Content-Type: application/json' \
  -d '{"mode":"ach","flowRate":300,"flowUnit":"m3/h","volume":60,"volumeUnit":"m3","ach":0,"purgeFraction":0.01,"decimalPlaces":4}'

API reference

Send a POST request with your inputs as JSON. File parameters require a separate upload first.

Endpoint

HTTP
POST https://api.elysiatools.com/en/api/tools/air-changes-per-hour

Parameters

NameTypeRequiredDescription
modeselectNoSolve ACH n (needs Q and V), solve Air Flow (needs n and V), or solve Volume (needs n and Q).
flowRatenumberNoOutdoor / supply volumetric airflow Q. Enter in the selected Flow Unit. Required unless solving flow.
flowUnitselectNo—
volumenumberNoRoom (conditioned space) volume V. Enter in the selected Volume Unit. Required unless solving volume.
volumeUnitselect

MCP integration

Add this tool to your Model Context Protocol server so AI agents can list and call it.

Server configuration

Add this block to your MCP client configuration:

mcp.json
{
  "mcpServers": {
    "elysiatools-air-changes-per-hour": {
      "name": "air-changes-per-hour",
      "description": "Compute the air change rate (ACH / n) of a room from the outdoor supply airflow Q and the room volume V: n = Q/V (1/h). Three modes: solve ACH (given Q and V), solve airflow (given n and V), or solve volume (given n and Q). Flow in m³/s/m³/h/CFM, volume in m³/ft³/L. Also reports the well-mixed single-zone purge time to reach a target residual fraction ε (default 1%): t = −ln(ε)/n hours.",
      "baseUrl": "https://api.elysiatools.com/mcp/sse?toolId=air-changes-per-hour",
      "command": "",
      "args": [],
      "env": {},
      "isActive": true,
      "type": "sse"
    }
  }
}

List available tools

After connecting to the SSE endpoint, list the exposed tools:

tools/list
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/list"
}

Call this tool

Invoke the tool by its id, passing arguments built from its parameters:

tools/call
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "air-changes-per-hour",
    "arguments": {
  "mode": "ach",
  "flowRate": 300,
  "flowUnit": "m3/h",
  "volume": 60,
  "volumeUnit": "m3",
  "ach": 0,
  "purgeFraction": 0.01,
  "decimalPlaces": 4
}
  }
}
Chain multiple tools in one session with a comma-separated toolId list, e.g. /mcp/sse?toolId=png-to-webp,jpg-to-webp,gif-to-webp (max 20).
Browse toolsOpen tool

© 2026 Elysia Tools. Developer documentation.

Back to siteBrowse tools
No
—
achnumberNoAir-change rate n (1/h). Required when solving flow or volume; ignored when solving ACH.
purgeFractionnumberNoResidual contaminant fraction ε after purge, between 0 and 1 (exclusive of 0). Default 0.01 (1%). The well-mixed purge time is t = −ln(ε)/n hours.
decimalPlacesnumberNo—

Response format

JSON result

JSON
{
  "key": {...},
  "metadata": {
    "key": "value"
  },
  "error": "Error message (optional)",
  "message": "Notification message (optional)"
}

Questions or issues? Contact [email protected]