All intents
Tenon serves 51 canonical contracts. Every finite request that crosses from a plugin, the CLI, or an agent into the host arrives as one of these, and each one is checked against the caller’s audience, declared uses, capabilities, and scope before it runs.
This page is generated by scripts/gen-intents.mjs from the Swift catalog and a running Tenon, so it cannot drift from what the app serves. Ask your own build the same question with tenon-cli intent list.
The Callable by column is the whole authorization story in one glance: a contract without cli cannot be sent from a shell, no matter how it is spelled. That is not cosmetic — a shell asking for one gets intent_not_found, because a caller that may not use a contract may not learn it exists either.
Why some pages have no schema table
12 of these are served only to plugins. This site is generated through the CLI discovery path, which fail-closes on exactly those, so their pages carry what the catalog declares and send you to tenon.intents.list() for the schema rather than printing a copy that can go stale.
Generated against an older build
Schemas on this site came from Tenon 0.1.0 (build 1, wire v3), and 2 contracts in the catalog beside it did not exist in that build yet: network.fetch.v1, workspace.identity.set.v1. Those pages carry the declaration without a schema. Run bun run gen:intents against a current Tenon to fill them in.
Schemas read from Tenon 0.1.0 (build 1, wire v3). Inventory read from the Swift catalog in the same commit as this page.
Workspace
| Intent | Does | Callable by | Effect |
|---|---|---|---|
workspace.content.open.v1 | Opens content in the tab identified by invocation scope, reusing the pane that already shows this kind of content and otherwise splitting a pane. | agent cli plugin | write |
workspace.identity.set.v1 | Changes the name, colour, or icon of the workspace identified by invocation scope. | agent cli plugin | — |
workspace.pane.close.v2 | Closes the pane identified by invocation scope. | agent cli plugin | destructive |
workspace.pane.content.set.v1 | Replaces content in the pane identified by invocation scope. | agent cli plugin | write |
workspace.pane.focus-next.v1 | Cycles focus within the active tab in invocation scope. | agent cli plugin | write |
workspace.pane.focus.v1 | Focuses the pane identified by invocation scope. | agent cli plugin | write |
workspace.pane.owner.v1 | Returns the workspace and tab that own the named pane. | agent cli plugin | read |
workspace.pane.split.v1 | Splits the pane identified by invocation scope. | agent cli plugin | write |
workspace.pane.title.set.v1 | Pins a display name to the pane identified by invocation scope, so an agent working there can say on its own tab what it is working on. | agent cli plugin | write |
workspace.select.v1 | Selects the workspace identified by invocation scope. | agent cli plugin | write |
workspace.state.v1 | Returns a bounded structural snapshot of workspaces, tabs, and panes. | agent cli plugin | read |
workspace.tab.close.v1 | Closes the tab identified by invocation scope, with every pane under it. | agent cli plugin | destructive |
workspace.tab.create.v1 | Creates a tab in the workspace identified by invocation scope. | agent cli plugin | write |
workspace.tab.focus.v1 | Focuses the tab identified by invocation scope. | agent cli plugin | write |
workspace.tab.next.v1 | Selects the next tab in the workspace identified by invocation scope. | agent cli plugin | write |
workspace.tab.previous.v1 | Selects the previous tab in the workspace identified by invocation scope. | agent cli plugin | write |
Terminal
| Intent | Does | Callable by | Effect |
|---|---|---|---|
terminal.open.v1 | Opens a new terminal tab in the scoped workspace and returns the id of the pane it created. | agent cli plugin | write |
terminal.process.read.v1 | Names the PTY device and the foreground process of the terminal identified by invocation scope. | agent cli plugin | read |
terminal.run.v1 | Runs a command in the preferred visible terminal for the invocation scope. | agent cli plugin | write |
terminal.scrollback.read.v1 | Returns one bounded page of the pane's retained scrollback, oldest row first. | agent cli plugin | read |
terminal.viewport.read.v1 | Returns one bounded observation of the visible terminal identified by invocation scope. | agent cli plugin | read |
terminal.wait.v1 | Waits for one bounded terminal condition and returns exactly one result. | agent cli plugin | read |
terminal.write.v1 | Writes bounded text to the terminal identified by invocation scope. | agent cli plugin | write |
Agents
| Intent | Does | Callable by | Effect |
|---|---|---|---|
agent.ask.v1 | Records one evidence-backed question against the pane in scope and waits until its exact human or agent recipient chooses an offered typed value, or until the caller-declared deadline expires. | agent cli plugin | write |
agent.command.v1 | Returns the command line that starts the named agent the way this person runs it, ready for terminal.open.v1. | agent cli plugin | read |
agent.inventory.v1 | Returns the coding agents installed on this machine, each with the options this person habitually passes it, so a caller offers the same choices the Launcher does instead of inventing its own. | agent cli plugin | read |
Filesystem
| Intent | Does | Callable by | Effect |
|---|---|---|---|
filesystem.directory.create.v1 | Creates one directory without implicitly creating its ancestors. | agent cli plugin | write |
filesystem.directory.list.v2 | Returns one bounded, cursor-addressable page of directory entries. | agent cli plugin | read |
filesystem.file.create.v1 | Creates a new empty file and fails if the destination exists. | agent cli plugin | write |
filesystem.file.read.v1 | Returns one bounded inline UTF-8 page of the file, split only on character boundaries. | agent cli plugin | read |
filesystem.file.write.v1 | Atomically replaces the file with bounded inline UTF-8 content. | agent cli plugin | write |
filesystem.path.exists.v1 | Checks whether a filesystem path exists. | agent cli plugin | read |
filesystem.path.move.v1 | Moves a file or directory without replacing an existing destination. | agent cli plugin | write |
filesystem.path.trash.v1 | Moves a file or directory to the recoverable system Trash. | agent cli plugin | destructive |
Files
| Intent | Does | Callable by | Effect |
|---|---|---|---|
file.open.v1 | Opens a path with the trusted default or an explicitly approved provider. | agent cli plugin | write |
file.reveal.v1 | Reveals a path in the system file browser. | agent cli plugin | write |
Process
| Intent | Does | Callable by | Effect |
|---|---|---|---|
process.exec.v1 | Runs an unsandboxed local process with the current user's filesystem and network authority. | agent cli plugin | write |
Browser
| Intent | Does | Callable by | Effect |
|---|---|---|---|
browser.surface.back.v1 | Navigates a caller-owned browser surface backward. | plugin | — |
browser.surface.forward.v1 | Navigates a caller-owned browser surface forward. | plugin | — |
browser.surface.load.v1 | Loads an HTTP or HTTPS URL in a caller-owned browser surface. | plugin | — |
browser.surface.reload.v1 | Reloads a caller-owned browser surface. | plugin | — |
User prompts
| Intent | Does | Callable by | Effect |
|---|---|---|---|
ui.confirm.v1 | Asks the user for an explicit yes or no decision. | plugin | — |
ui.pick.v1 | Asks the user to select one item from a bounded exact list. | plugin | — |
ui.prompt.v1 | Asks the user for bounded text. | plugin | — |
ui.toast.v1 | Shows a bounded in-app notification. | plugin | — |
Opening
| Intent | Does | Callable by | Effect |
|---|---|---|---|
url.open.v1 | Opens a web address with the trusted default or an explicitly approved provider. | agent cli plugin | write |
Clipboard
| Intent | Does | Callable by | Effect |
|---|---|---|---|
clipboard.write.v1 | Writes bounded text to the system clipboard. | plugin | — |
Secrets
| Intent | Does | Callable by | Effect |
|---|---|---|---|
secrets.delete.v1 | Deletes one value from the caller's isolated secret namespace. | plugin | — |
secrets.get.v1 | Reads one value from the caller's isolated secret namespace. | plugin | — |
secrets.set.v1 | Stores one value in the caller's isolated secret namespace. | plugin | — |
Network
| Intent | Does | Callable by | Effect |
|---|---|---|---|
network.fetch.v1 | Performs one bounded HTTP request to a policy-authorized host. | agent cli plugin | — |