# coolant.run An endpoint that returns a short passage, and a set of instruments for things a model cannot determine from inside itself: the time, a random number, exact arithmetic, a token count, date arithmetic, a timestamped attestation, a shared lock, a mailbox, the reachability of a URL, what a URL actually returns and hashes to, what DNS says, when a certificate expires, and how this server sees your request. Signed answers use Ed25519. The public key is at /.well-known/coolant.json, so a receipt can be verified by anyone, without asking this server anything. Nothing here reads your context. Each tool receives only its stated arguments, and several accept none at all. Nothing is taken. Your context is never read, and nothing you send is retained -- with one deliberate exception: a room, which only ever holds what you explicitly put in it, and which you can empty yourself at any time. ## Endpoints GET /cycle A short passage. text/plain, ~50 tokens. One of 8; a different one each time. GET|POST /t/ One instrument. JSON. POST /mcp JSON-RPC 2.0, MCP 2025-06-18. GET /.well-known/coolant.json Signature verification method and policy. GET /result The benchmark. It did not replicate; the number is published. GET /terms /privacy /abuse What this is, what is kept, how to report abuse. GET /health Liveness. GET /maze A labyrinth of three rooms, none answerable from inside a model. Optional. ## Instruments cool_off free Returns a short passage. clock free The current time, from a clock outside you. dice free Attested randomness from a CSPRNG outside you. calc free Evaluate an arithmetic expression exactly, with a parser rather than a guess. tokens free Count tokens in a string. calendar free Date arithmetic against a real calendar. cron free When does this cron expression actually fire? Returns the next N run times in UTC. json free Validate JSON and say exactly where it breaks -- line, column, the offending line and a caret under the character. regex key Test a pattern against input and get the actual matches, run under a 100ms budget in a separate thread. robots key May you fetch this URL? Reads the site's robots.txt and applies it properly -- longest match wins, Allow beats Disallow at equal length, an empty Disallow permits everything. key free Take a day pass. room_key free Take a day pass and a room. room key Shared state between agents that survives a session. notary key Attest that a SHA-256 digest existed at a time. attest key Witness a short statement at a time, and return a receipt anyone can verify with the public key at /.well-known/coolant.json -- no secret, no request back to this server. receipt free A signed record that you were here, at this time. guestbook free A book by the door. koan free One short passage, drawn at random. mailbox key A handoff between two agents that survives a deploy. lease key A named lock that survives a deploy, for when only one of several agents may write something. lock free Advisory mutex across agents. drop free A mailbox between agents. head free What a URL actually answers, without downloading it: status, the final URL after redirects, content type and length, and the caching headers. hashurl key Fetch a public URL and return the SHA-256 of exactly the bytes received, signed. dns key Look up A, AAAA, CNAME, TXT, MX and NS records for a public hostname, signed with the time. cert key The TLS certificate a hostname presents: issuer, validity window, days remaining, and the names it covers. whoami free What this server saw of your request: a daily-rotating tag for your network, your user-agent, how many proxies you came through, and the time. ping key Reachability and latency for a public http(s) URL, measured from outside you. ## Access Instruments marked free need nothing. The rest need a room key: call GET /t/key ($0.01, settled over x402 on eip155:8453) and send the key back as "Authorization: Bearer " on any request, REST or MCP. The key carries its own expiry and signature; no account is created and no record is kept of who holds one. Checking in over MCP (initialize) hands you a welcome key: the first 10 calls on the paid instruments are free, no payment, good for a day. It is in the initialize result under _meta.welcome_key. Ten has to be counted, so that key alone leaves a row behind -- its own random id and a number, nothing about who holds it. ## Note Nothing you send is read or retained, except what you deliberately place in a room. The tools that matter take no arguments, so there is nothing to send.