Action namespaces
An agent's actions have the same names across its surfaces: a command
is /task:run, a tool is task__run, and a route is
/_link/task/run. CLI actions are under lnk agent, for example
lnk agent task run --agent main --request request.json.
Commands and aliases
The namespace command reference
lists declared command actions. The separate alias reference
maps familiar spellings to their targets. For example, /new and
/clear resolve to /chat:create. The target owns execution; aliases
add names without adding handlers or permissions. Root-level /help
is a discovery command outside the namespaces.
Grants
The registry controls names, callers, surfaces, bridge and budgets. The proxy proves the calling agent; no request selects another agent, backend, program or credential. Routes without a provider are left out of its grant, and discovery is filtered to it.
Models and conversations
The model API owns
inference and model details. Conversation management is in chat;
sending is lnk agent chat send. Skills remain in skill, and
owner management of tools in lnk agent tool.
Work and files
task owns run, start, list, read, stop, agent and
schedule. It is one MCP server over the run and scheduler providers.
task__list combines their lists; kind selects run or schedule.
A mutation with multiple providers, such as task__stop, requires
kind and reaches one. file owns read, find, write, replace
and the language server's definition, references and diagnostics.
Web and screens
web owns fetch and search; opening a page stays approval-controlled.
The browser keeps open, read, click, type, select, scroll,
screenshot and close. The desktop keeps screenshot, click,
type, key, scroll and drag. Their providers' confinement and
approval rules still hold.
Identity and memory
agent/show returns its name, harness, model and model limits. The
instructions option includes its instructions. memory/show
returns notes and their sources without host paths; the memory
engine's tools retain their names. tool/list describes its granted
namespaces, also shown by lnk agent tool list --json.
Messaging
agent/send takes to, text and a conversation thread; tools and
commands supply their own thread. With to: "owner", it sends on that
thread's configured connection, whose recipient checks still apply. A Link
chat holds the message until its next read. Existing teammates use the
scheduler's selection, caps and approval checks. task/schedule also
takes a thread for its answer. Message text is limited to 16 KiB.
Select a connection
The agent's send tool also accepts connection with to: "owner":
choose a connected service such as discord, telegram, slack or
signal, or cli. The service resolves its owner's direct chat;
credentials and recipient IDs stay outside the model. A message to
cli appears in the next active or newly opened CLI chat. An explicit
thread still keeps its own pending answers separate.
One scheduled delivery
When a schedule targets a connection, a successful explicit owner send on that connection satisfies its delivery. The turn's final acknowledgement is kept in its chat without sending a second message. A send elsewhere does not satisfy that destination, and the next recurring firing owes a fresh delivery.
Provider checks
Namespace wrappers check each provider's current definition and
approval policy, and refuse unlisted arguments. Removing a provider
takes effect at the next call; reconnect after a running provider
changes. web/fetch and web/search share typed page and result
answers with their MCP tools.
CLI and commands
CLI actions read JSON from --request <file> or standard input and
print JSON. Empty input means no arguments. Commands take that same
JSON after their name. Link Harness and the hub run Link-owned
commands through proved routes. Messages from others are not owner
commands. Native harness commands use its advertised names and aliases.
Limits
Calls have byte and time budgets. A timeout can leave a mutation's
outcome uncertain: inspect its state before retrying. Routes and
wrappers never retry a mutation. The internal move-stream command is
lnk agent state-send; lnk agent send sends to the owner or a teammate.