execution), and read its result and receipt.
It uses your organization API key. Configure your assistant to ask before
each change or paid request; the stop happens in your assistant, not in
Millwork.
For questions about using Millwork, connect the
documentation MCP, which searches and reads these docs.
Connect your assistant
Requires Node.js 20 or later and an organization API key. Add a local server to your assistant’s MCP settings:What it can do
Each tool maps to one REST endpoint (two for the proposal tools), so the assistant sees exactly what a direct API caller sees. A saved model is an option Millwork may run your task on; the API calls it anarm, which is why several tool names carry
that word.
Reads need no confirmation. The nine read-only tools change nothing, and
the server may retry one when the network or Millwork fails. Writes need your
confirmation. The server itself sends no confirmation flag; your assistant or its host enforces the
stop, so configure it to confirm every tool that is not a read. The server retries a write on its own
only for
solver_submit, and only with the same request key and the same
request, so a retry cannot start a second run. Any other write that loses its
response is a failure, and the next call is a new decision for you, not an
automatic replay. The server reads your
organization API key from its own environment, sends it only to Millwork as
the bearer token, and never returns it in a tool result. Confirmation is a
stop in the assistant, not a narrower key: your API key keeps its full
permissions, so give the assistant only a key whose permissions you are
willing to let it use.
Run submission through the assistant
solver_submit is the one tool that can cost money, so your assistant must
ask first every time. In 0.1.0 and 0.1.1, a call must carry:
- a request key, supplied by the assistant as
idempotency_keyand sent in theIdempotency-Keyheader, so a retry does not start the work twice; the server rejects a call without one before it reaches Millwork; - the task and policy, the same shape as
POST /v1/executions; Millwork keeps the saved models that fit your policy limits and picks one; and - an output check, a check applied to the run’s output, as
verifier_id. Both published versions require this field. If you have not created an output check, create one withPOST /v1/verifiersbefore the first submission.
execution_id and status. The
assistant then follows it with solver_status, reads the output with
solver_result when the run completes, and reads the receipt with
solver_receipt. Every one of those is read only.
A test run (a run the API calls Echo, which calls no model and has no
platform fee and no model cost) takes no output check, and 0.1.0 and 0.1.1
both require verifier_id on every submission, so neither can submit a test
run. Make your first test run with curl
(Make your first API call), then let the
assistant follow it with the read-only tools. A live run submitted through a
published version needs an output check and is charged the platform fee when
Millwork accepts it. Read Model access and billing before
approving a live run, and Errors and retries
for what each error means.
Use a coding assistant
Give an assistant one page and a short set of rules so it works with you and never sees a secret.
Documentation MCP
The live, read-only server that searches and reads these docs.