agentry/drafter
Drafts a QuickAgent from a description, searching the registry and the web; AI Review reads every result first.
Built into Agentry. The application runs this package itself; it is published here so you can read how it works. Its README says what Agentry gives it beyond its manifest.
Declared capabilities
Ships knowledge: drafting-guide (211.3 KB), in the release archive under knowledge/<name>/, scanned with the version.
Capabilities are the author's declaration and the basis for policy and scanning. The registry cannot enforce them at run time. Your runtime should.
MCP servers & tools
agentry run serves exactly the tools this contract declares, through a per-run MCP gateway. An undeclared capability is a tool that does not exist at run time.
Tools the runner grants
| Manifest declaration | Tool(s) granted |
|---|---|
| (always) | write_report — reports → the run's output folder |
| (always) | list_inputs, read_input, search_inputs — operator-provided input files, read-only |
MCP servers involved
- QuickAgent Tools — the runner's companion server, served through a per-run Docker MCP Gateway; its tool surface is exactly the table above.
In an embedded install
Installed into an existing coding agent (agentry install), the same contract maps to the host's built-in tools — enforcement there is the host's. Allowed tools: none declared (host defaults apply).
Install
agentry install agentry/drafter@1.15.4git clone https://secureagentry.net/agentry/drafter.gitgit clone ssh://git@git.secureagentry.net/agentry/drafter.gitclaude-skill is this agent's default target, so the flag is not needed.
README.md
# The Drafter The Drafter is the QuickAgent behind **Describe it** in the Agentry Builder. You describe a task in plain words, and it drafts a QuickAgent for that task: a manifest (`agent.yaml`), an instruction file (`AGENT.md`) and short notes on what it chose and why. It publishes nothing. You read the draft and decide whether to submit it, and a submission is scanned like any other release. ## This is the package that runs The Drafter is built into the Agentry CLI and the desktop app, and it runs from there: on your computer when you run `agentry draft`, and on an Agentry sandbox host when you use Describe it on the site or in Agentry. This release has the same bytes. The registry built its archive from the package the CLI carries, and the archive's digest is the one the CLI reports. Run `agentry builtins` to print it and compare it with the digest on this page. Installing this release does not give you the Drafter. The application runs the Drafter as a built-in, with the tools listed below. If you install this release, it runs as an ordinary QuickAgent with only what its manifest declares. ## What it is given beyond its manifest The manifest declares no network, no files and no commands. When Agentry runs the Drafter, it grants three tools that no other QuickAgent can have: - `registry_search`: searches Agentry's published QuickAgents, reads one QuickAgent's manifest, and reads the registry's vulnerability check of an exact MCP server version. - `web_search`: searches the web. A draft has this tool only when a search provider is configured. - `web_read`: reads one public web page as text. AI Review reads every search result, page and registry answer before the Drafter's model does. Anything it flags, or could not scan, is withheld from the model, and the draft's notes list what was withheld. AI Review also reads the description before the run starts and checks the finished draft. When you give a draft your knowledge packs, it also has the three knowledge tools every run with a pack has (`knowledge_list`, `knowledge_search`, `knowledge_read`). It reads the packs before the web, and never ships them. Nothing of a pack reaches its model unscanned: a pack Agentry scanned is read as that scan left it, and any other pack is scanned by AI Review before the draft starts. What a scan flagged is withheld, and the notes name it. ## Its drafting guide The Drafter ships a knowledge pack of its own, `drafting-guide`, under `knowledge/drafting-guide/` in this release, declared in `knowledge.ships`. It covers how a QuickAgent run works and what a declared MCP server meets in the runner: a musl Node runtime and a glibc Python one, no install scripts, no launch arguments, stdio only, none of the run's files, and only port 443 to its declared hosts. It also has a checklist for a server before it is pinned, and two lists of servers: *Runs here*, the servers a survey saw install, start and list their tools in the runner, and *Does not run here*, the ones it saw fail, each with the reason, the runtime and the date. The lists are one thing for the Drafter to look at, not a judgement of any server's safety or quality (`knowledge/drafting-guide/sources/servers.yaml`; the survey is `scripts/mcp-server-survey` in the CLI's repository). Since 1.8.2 the guide also holds the reference the Drafter's instruction used to carry on every turn: every field of the manifest and the rules' bounds, the commands every run provides, the network and the `fetch` tool, the intake and the guide, run modes, a person's knowledge at run time, how to write a QuickAgent's instructions, and three worked drafts. `AGENT.md` keeps the role, the rules for deciding, the steps, each naming the pages it needs, and the shape of the answer. The checks after a draft hold every rule they check, whatever the Drafter read. Since 1.8.3 the checks after a draft hold each MCP server pin to the two lists. A pin on *Does not run here*, or a server whose own direct dependencies (from the package metadata the check of its version already reads) include a package the list names, gets the one repair turn, like any rule the draft breaks. An npm install script is noted for you to check before a run, not refused. The notes say what admitted each server the draft keeps: its *Runs here* entry, or the Drafter's judgement with the guide for a server on neither list. The lists stay soft: nothing outside the Drafter reads them, and a server on neither list may be pinned. The check sends nothing new off your computer. Since 1.9.0 the guide teaches how a QuickAgent takes its files: every input is read in its text or as uploaded, the runner unpacks archives, and the manifest's `inputs` block says what kinds of file to bring and which view to read first. A draft that takes files declares the block, writes `guide.files` to match, and declares no command to read its inputs. The checks after a draft correct the block's slips (a kind in the singular, `any` beside named kinds, the block under `capabilities`) and send any archive reader to the repair turn. A release that declares the block needs CLI v0.6.73 or later to run; an older CLI refuses its manifest. Since 1.10.0 the Drafter marks each key a draft declares: optional (`capabilities.optionalSecrets`) when the QuickAgent still does its job without it, required when it cannot. Its instructions say what to do when an optional key was not given, and a `secret` question's `required` matches its key. The Builders on the site and in the desktop show the marking, and the author can change it. A release that marks a key optional needs CLI v0.6.66 or later to run; an older CLI refuses its manifest. Since 1.11.0 the Drafter may declare a vendor's own remote MCP server by its address, and prefers one to a package for the same service. A remote server signs in by OAuth, by one key sent as a bearer token, or not at all, and an OAuth one asks whoever runs the QuickAgent to sign in at the vendor at the first run of each version. The draft's notes say so, and say whose OAuth client the vendor needs. A package server signs in only with a sign-in its guide lists as seen working, copied exactly: the checks after a draft send any other `oauth` block to the repair turn. The guide's `servers/sign-ins.md` lists the vendors' servers and the sign-ins. A release with a remote server needs CLI v0.6.69 or later to run, one signed in to by OAuth CLI v0.6.70, and a package's sign-in CLI v0.6.71; an older CLI refuses its manifest. Since 1.12.0 the Drafter knows the tools every run has beyond its manifest: the scratch folder, and `export_pdf`, the only way a run makes a PDF. A QuickAgent whose result is a PDF writes it in Markdown with `write_report` and turns it into the PDF with `export_pdf`, laid out in the report theme the person chose. The checks after a draft send instructions that have the run write a PDF with `write_report`, or leave the person to print a page to PDF, to the repair turn. A release whose instructions call `export_pdf` needs CLI v0.6.82 or later to run. 1.12.1 teaches the two paths: `write_report`'s `path` is inside `reports/` (`resume.md`), and `export_pdf`'s `source` names it from the output folder (`reports/resume.md`), so a draft no longer writes into `reports/reports/`. Since 1.13.0 the Drafter knows input sources. It asks for a codebase with a `repository` intake question and for a file at a web address with a `url` question, which the runner fetches before the run, and never advises a `.zip` for a repository or declares egress or a key to clone one. It knows that a tool result comes a page at a time, that a large `fetch` body is saved in the scratch folder or kept whole with `saveTo`, and that `scratch_read` and `scratch_search` read it. A release that asks a `repository` question needs CLI v0.6.97 or later, a `url` question v0.6.98 or later, and v0.6.104 or later to run either hosted. Since 1.14.0 the Drafter knows target hosts. For a task on a machine the person names (a server to set up, manage or diagnose) it asks for the machine with an intake question of type `host` and lists its id in `capabilities.targetHosts`; it declares no SSH client, no egress and no key for the machine, writes the instructions for the host tools and the shell, and says in the notes that such a QuickAgent runs only on the person's computer. The checks after a draft send an `exec` that names `ssh`, `scp`, `sftp` or `rsync` to the repair turn with a line that points to a target host. A release that declares a target host needs CLI v0.6.105 or later to run, v0.6.106 for the shell and v0.6.109 for a host on port 22; it does not run In Agentry. Since 1.15.0 the Drafter knows the browser. For a task that tests a website the person names as a person sees it (pages, forms, links, a phone's width) it asks for the site with an intake question of type `url` and lists its id in `capabilities.browser.sites`, adds `hosts` only for what the site's pages load, keeps the site scope, and declares a key the browser types into a sign-in form in `capabilities.secrets` and `capabilities.browser.secrets`, never with `scope: public`. It writes the instructions for the browser tools, with screenshots saved by bare file names into `reports/browser/`, and brings no browser of its own: the checks after a draft send an `exec` that names a browser or a driver (Chromium, Chrome, Firefox, Playwright, Puppeteer, Selenium, a WebDriver), or an MCP server that is one, to the repair turn with a line that points to the browser line. Since 1.15.2 that includes a hosted browser service (Browserless, Browserbase, browser-use, Hyperbrowser, Steel), by its package or by its remote address. A release that declares a browser needs CLI v0.6.117 or later, or Agentry Desktop 0.6.111; In Agentry it runs since CLI v0.6.118 and opens public sites only. Since 1.15.2 the Drafter prefers what needs no key and no account: the run's own tools, the browser the runner gives, `fetch` to an API that answers without a key, a server that needs none. It declares a server or an API that needs a key, an account or a paid plan only when nothing key-free does the task, and the notes then say why. Since 1.15.4 the Drafter knows deliverables. A QuickAgent whose result is a file tells its run to mark that file with `deliverable: true` and a one-line `title` on the `write_report` (or `export_pdf`) call that writes it, and to leave notes and drafts unmarked, so the person finds the result among a run's files. The runner attaches the guide to every run of the Drafter, through the same knowledge tools, the repair turn included. It is part of this release, so the registry scans it with the published release. It is not one of your packs and does not count against a draft's limit of packs, but a pack of yours with the same name is refused. An install of this release from the registry is an ordinary QuickAgent and carries the pack like any release that ships one. ## What it returns `AGENT.md` and `notes.md`, written with `write_report`, and a final answer in the shape `output.schema.json` describes: the manifest's fields, the published QuickAgents that already do the job, and the questions the draft leaves open. The application turns them into the draft you review.