Naming conventions
tuls intentionally uses different naming conventions at different interface boundaries instead of mixing styles within one interface.
| Interface | Convention | Example |
|---|---|---|
| Rust identifiers | snake_case | max_length |
| Agent YAML frontmatter | snake_case | disallowed_tools |
| Agent files | kebab-case | code-reviewer.md |
| CLI flags | --kebab-case | --user-agent |
| MCP JSON fields | camelCase | maxLength |
| MCP tool names | snake_case | read_text_file |
| Capabilities | domain.action | filesystem.read |
| Built-in exact selectors | server/tool | filesystem/read_text_file |
| Child MCP selectors | server/tool, server/* | fetch/* |
Provider-facing tool names
Provider-facing tool names are internally qualified so tools from different child MCP servers remain distinguishable. Policy configuration should always use the documented server/tool form above.