로딩 중...
로딩 중...
Your own program, Artisan, an AI assistant — whatever you roast with, send the record with one key and your roasting journal fills itself — tag a green coffee or lot and stock and the raw-material ledger follow.
Anyone can build a program that reads temperatures now. What comes after is the chore. Send us the roast and these happen on their own.
Batches, input, output and weight loss per day, added automatically.
Name the green coffee and green stock goes down, roasted stock goes up, and the ledger records the outflow.
Graphs, usual range and roast comparison work exactly as for roasts recorded in the app.
A key is like a password. We show it only once, so copy it right away.
Replace the part starting with hl_ with your key. Temperatures in °C, weights in grams, time in seconds from charge.
curl -X POST https://www.hyper-log.cloud/api/v1/roasts \
-H "Authorization: Bearer hl_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Ethiopia Guji 1.2kg",
"bean": "Ethiopia Guji",
"input_g": 1200, "output_g": 1020,
"samples": [
{"t": 0, "bt": 200.1, "et": 230.4},
{"t": 60, "bt": 118.5, "et": 226.0},
{"t": 300, "bt": 162.3, "et": 229.8},
{"t": 690, "bt": 214.7, "et": 238.1}
],
"events": {"turning_point": 76, "first_crack": 508, "drop": 690},
"client_id": "batch-2026-09-29-01"
}'On success you get 201 and the roast's URL. Send the same client_id again and you get the same roast back instead of a new one — retries never save twice.
Let an AI such as Claude read and write your roasts directly.
claude mcp add --transport http hyper-log https://www.hyper-log.cloud/api/mcp \
--header "Authorization: Bearer hl_YOUR_KEY"{
"mcpServers": {
"hyper-log": {
"command": "npx",
"args": [
"-y", "mcp-remote", "https://www.hyper-log.cloud/api/mcp",
"--header", "Authorization: Bearer hl_YOUR_KEY"
]
}
}
}On Windows, if it won't connect, the space in the header may be the cause. As mcp-remote suggests, use "--header", "Authorization:${AUTH}" and put "AUTH": "Bearer hl_…" in env.
Try asking
Tools: list roasts · one roast (curve) · save roast · stock · green-coffee search · compare with other roasters
| Field | Meaning |
|---|---|
| name | Roast name |
| bean | Coffee name |
| machine | Roaster name |
| input_g / output_g | Input and output weight (grams) |
| samples | [{ "t": seconds, "bt": bean temp, "et": exhaust temp }] — preheat is negative seconds ("time" works too). Up to 6,000 points |
| events | { "turning_point": 76, "dry_end": 277, "first_crack": 508, "drop": 692 } — seconds. Artisan names (TP, DRY, FCs, FCe, SCs, DROP) work too. If charge is not at 0s, all times are shifted so charge = 0 |
| unit | "C" (default) or "F" (any case) — Fahrenheit is converted to Celsius |
| roasted_at | When you roasted. Without a time zone it is read as Korea time (e.g. 2026-09-28T09:10:00). Use it to bring in older roasts |
| coffee_id | Coffee id from your stock — with input and output it moves green→roasted stock and records the outflow on that coffee's paired lot. It draws from current stock, so leave it out when importing old roasts |
| green_bean_lot_id | Green lot id — records the outflow in the raw-material ledger |
| client_id | Your program's roast id. Sending it again never saves twice |
| notes | Notes |
| POST | /api/v1/roasts | Send one roast |
| GET | /api/v1/roasts?limit=20&q= | My roasts, newest first |
| GET | /api/v1/roasts/{id} | One roast with its curve |
| GET | /api/v1/inventory | Coffee stock and green lots (find coffee_id and lot ids) |
| GET | /api/v1/green-beans?q= | Korean importers' green coffee (price per kg) |
| GET | /api/v1/benchmark | Other roasters’ typical ranges (when 3+) |
| GET | /api/v1/me | Check your key |
| POST | /api/mcp | AI assistant connection (MCP) |
120 requests per minute per key · 500 roasts per person per day · 1MB per request. The AI connection takes up to 20 requests per batch. Errors come back with a details list saying what to fix.