Release 37

Released October 5, 2026.

This release brought much more of Leed to the command line. The leed CLI gained content import from markdown and HTML, single-page create and update, deployment control, bulk contact export and import, and six new settings areas. AI agents connected over MCP gained matching tools, and edits from an agent became safe to make while a person works in the same page.

New features

Import markdown and HTML, not just OpenAPI specs

Importing content moved under its own leed import command, with the source as the subcommand. Alongside OpenAPI specs, the CLI could now import a directory of markdown files, or a directory of HTML files that it converted to markdown in place. Every source followed the same flow: stage the set locally, build the site to review the rendered pages, then upload. A nested source directory became nested navigation folders, and each folder name became that part of the page’s URL.

leed import markdown ./leed-import --page-type-id <pageTypeId>
leed site build --serve
leed import status --page-type-id <pageTypeId>
leed import apply  --page-type-id <pageTypeId>

leed import status reported what was staged and anything that would stop the upload, before anything was written. leed import clean discarded a staged set, removing exactly what staging wrote. Importing into a documentation set that already had folders merged into its existing menu instead of replacing it.

Learn more: Importing an OpenAPI spec, CLI command reference.

Create and update pages from the CLI

A new leed page command worked on one page at a time, immediately, with no site checkout needed. You could create a page from a file or straight from a pipe, replace the body of a page that had never been published, publish or schedule a page, and read or replace its custom frontmatter.

cat page.md | leed page create --page-type-id <pageTypeId>
leed page schedule <pageId> --at 2026-11-01T09:00:00Z

Every write was checked before it was sent, using the same rules the CMS applies. The result sorted findings into three groups: what was cleaned up, what would be dropped (such as bold text inside a heading), and what was blocked. Dropped content was reported loudly instead of disappearing silently, and --strict turned those warnings into a refusal. Changing a single block of a page that already had content was protected against overwriting someone else’s edit.

Learn more: CLI command reference.

Manage forms, shortcodes, users, URL aliases and OIDC trusts from the CLI

leed settings gained six new areas, all with --json output for scripting:

CommandWhat it covers
leed settings formList, view, create, change, publish and delete forms
leed settings shortcodeList, view and create short links
leed settings userList, view and change team members, including an Administrator changing a base role
leed settings oidctrustList, create and revoke OIDC trusts for CI pipelines
leed settings pathList and resolve URL paths, and create and delete aliases
leed settings brokenlinksReport the broken links found by the last link check

A shortcode’s destination is fixed when it is created, so leed settings shortcode set always refuses and explains why. Creating an OIDC trust grants access to your company, so it asks for confirmation first, and needs --yes when no one is at the terminal. AI agents gained tools for broken-link reports and URL alias management. On purpose, no AI tool can change a user’s role or manage an OIDC trust.

Learn more: CLI command reference.

Check, promote and retry deployments from the CLI and MCP

The Deploy screen’s controls became available outside the browser. leed deployments status showed recent preview and live deployments and whether the preview could be promoted. leed deployments promote pushed preview live, under the same permission and checks as the button. leed deployments retry <deploymentId> re-ran a failed build that could be retried. AI agents connected over MCP gained the same three abilities.

Repeating an action that had already happened answered with that outcome instead of an error, so a release script could retry safely.

Learn more: Promoting preview to live, CLI command reference.

Export and import contacts in bulk

leed contacts export wrote your contacts to a CSV or JSON file, and leed contacts import created or updated contacts from one. AI agents gained matching bulk export and import tools over MCP.

leed contacts export ./contacts.csv
leed contacts import ./contacts.csv

Contacts are metered, so an export on a plan with a contact limit returned only the contacts you can see and said how many more were locked above the limit. An import was never refused for going over the limit: the extra contacts were captured and locked, not rejected.

Learn more: Importing contacts.

Safe agent edits alongside human editors

Two changes let an AI agent keep a documentation set current while people edit it too. First, an agent could read the state of every page in a page type in one call: each page’s path, status, source commit, last change and referenced assets. The same list was available from the CLI as leed page state. Second, reading a page now returned a token for each block, and an agent’s change to a block had to carry that token back. If someone had changed that block since the agent read it, the whole edit was rejected and nothing was applied. A change to a different block on the same page went through as normal.

Release 39 renamed leed page state to leed page sync-state and renamed several of the MCP page tools.

Learn more: Authoring pages over MCP.

Fixes

Repository access token kept out of your checkout

The CLI used to store your content repository access token in the checkout’s .git/config, a file any user on the machine could read. The token now lives in your private credentials file, and the CLI hands it to git only for the moment git needs it. For git commands you run yourself, such as git pull --rebase or a GUI client, the checkout names the CLI as git’s credential helper, so they still authenticate. Existing checkouts were migrated automatically the next time you ran a leed site command.

Learn more: CLI authentication.

ESC