Outcome: point a fetch-capable or tool-enabled assistant at this language.
Prerequisite: none for the first section. The MCP server needs the toolchain installed as described in First Program.
Start with one fetch
For an assistant that can retrieve a URL but has no tools configured, the widest common surface is a single self-contained file.
https://topaz.ooo/agents.mdIt carries the shape of a file, the forms, the host/profile boundary, and the section that matters most for a model that already knows other languages: an explicit list of non-forms. It warns against Vec<T>, async, try, class syntax, and treating null as universal absence, while preserving the supported T | null data-boundary form. Naming those distinctions prevents confident guesses from becoming invalid source.
Two more machine surfaces sit beside it. https://topaz.ooo/llms.txt indexes every current page, and https://topaz.ooo/version.json states which version answers.
If you are configuring an assistant for someone else, giving it that one URL is the whole setup.
The problem the tools solve
Fetching gets an assistant to correct forms. It does not tell it whether the program it just wrote actually compiles.
An assistant writing an unfamiliar language does one of two things. It reads documentation and guesses, or it writes, gets told exactly what is wrong, and fixes it. The second loop produces working code even when documentation is thin. The first produces confident text that does not compile. A reference alone leaves an assistant in the first loop. A checker moves it to the second.
Four tools
| Tool | What it answers |
|---|---|
topaz_spec | What is the exact form for this part of the language? |
topaz_examples | Show me verified code for this concept. |
topaz_check | Is what I just wrote correct, and if not, exactly where? |
topaz_run | What does it actually print? |
topaz_check is the tool intended to change outcomes. The planned server returns the compiler's own diagnostic, its code, and its source position, unmodified. An assistant can repair its output from exact evidence instead of a paraphrase.
What execution must isolate
Topaz routes observable effects through a host or product-profile boundary. That makes a no-capability execution host practical, but it does not turn the ordinary native CLI into a sandbox: native execution can expose filesystem and I/O operations.
The planned topaz_run tool therefore has two independent barriers. It uses a proven no-capability Topaz host, and it runs inside an operating-system sandbox that denies network and child processes and exposes only the ephemeral submitted source. Ordinary unrestricted topaz run is not an acceptable server boundary.
Isolation is still not resource control. A submitted program can loop, allocate, or print without bound, so every run also needs wall-clock, memory, and output ceilings and must leave no child process behind.
The design also requires submitted source not to be retained or logged and no state to survive between calls. These are implementation acceptance conditions, not claims about a server that already exists.
Machine-readable descriptor
Clients and crawlers can read the server description directly.
https://topaz.ooo/mcp.jsonIt lists the planned tools, their inputs, the language version, and the required safety boundaries in structured form. When the server ships, its tool list must match the descriptor. A descriptor that disagrees with its server is worse than no descriptor.
Current status
The descriptor is published with "status": "planned". The server itself is not shipped yet. Shipping requires packaged isolation and resource-denial tests plus the usability test: an assistant with no prior exposure, given only the server, writes a small program that checks and runs on its second attempt. When those gates pass, the status changes and this page gains the client configuration block.
Ready to continue when
You can say what each planned tool answers and explain why execution needs both the language host boundary and independent operating-system and resource isolation.
For what a program can and cannot reach, see Interop Boundaries. For the forms an assistant will be looking up, see Syntax at a Glance.