Capability policy
Every built-in tool belongs to a capability. Capabilities are the coarse unit of grant, and exact tool selectors are the fine unit.
Canonical capabilities
| Capability | Server | Scope |
|---|---|---|
filesystem.read | filesystem | Read/list/search/inspect files |
filesystem.write | filesystem | Create/edit/write/move files and directories |
network.fetch | fetch | Fetch tool and fetch prompt |
memory.read | memory | Read/search/open graph data and memory resource |
memory.write | memory | Mutate graph data |
process.execute | shell | Execute local programs |
skills.read | skills | Activate discovered skills |
agents.run | agents | Spawn, message, and wait for subagents |
Exact built-in selectors
Exact selectors use:
text
server/tool_nameExamples:
text
filesystem/read_text_file
filesystem/write_file
memory/search_nodes
agents/spawn_agentPolicy behavior
With no --allow, a directly launched server exposes all of its own tools:
bash
tuls filesystem .As soon as at least one --allow is present, the policy becomes an allowlist:
bash
tuls filesystem . \
--allow filesystem.readGrant two capabilities:
bash
tuls filesystem . \
--allow filesystem.read \
--allow filesystem.writeGrant read/write but remove one exact operation:
bash
tuls filesystem . \
--allow filesystem.read \
--allow filesystem.write \
--deny filesystem/move_fileGrant a single exact tool:
bash
tuls filesystem . \
--allow filesystem/read_text_fileStrict selectors
Invalid capabilities, misspelled tool IDs, and capabilities that do not belong to the selected server are rejected at startup. Selectors are case-sensitive.
Auxiliary surfaces (prompts & resources)
An auxiliary MCP surface — the fetch prompt, the memory://knowledge-graph resource — is enabled only when:
- the controlling capability is itself granted and
- the controlling tool is not explicitly denied.
| Grant | fetch tool | fetch prompt / memory resource |
|---|---|---|
| none (default) | yes | yes |
exact tool (--allow fetch/fetch) | yes | no |
capability (--allow network.fetch) | yes | yes |
capability + exact deny (--deny fetch/fetch) | no | no |
Concretely:
--allow fetch/fetchgrants only the tool — the prompt stays disabled.--allow network.fetchgrants the capability — tool and prompt are enabled.--deny fetch/fetchor--deny memory/read_graphdisables the auxiliary surface even when the capability is granted.
Next steps
- Browse the server reference for per-server tool tables.
- See troubleshooting for common selector mistakes.