Transport
JSON-RPC 2.0 over POST /mcp, bearer token, protocol version 2025-06-18. Two methods matter
in practice: tools/list and tools/call.
The thirteen tools
| Tool | Arguments | Reads/writes | Answer |
|---|---|---|---|
telemetry.stats |
— | reads | counters, file sizes, uptime — the cheap health probe |
logs.query |
contains, severity, traceId, from, to, limit |
reads | OTLP log records, newest first |
traces.query |
traceId, name, minDurationMs, from, to, limit |
reads | spans, filterable by slowness |
metrics.query |
name, from, to, limit |
reads | metric data points |
customers.list |
limit |
reads | CRM accounts, newest first |
customers.create |
name, email, plan |
writes | the created row |
users.list |
limit |
reads | allowlist with role, last sign-in, thread count |
users.create |
login, email, name, role |
writes | a new member |
users.set_role |
login, role |
writes | a member's role |
users.delete |
login |
writes | removal from the allowlist |
roles.list |
— | reads | every role with its tool set (availableTools included for masters) |
roles.create |
name, soul, tools, title |
writes | a new role — master only |
roles.delete |
name |
writes | removes an unused, non-built-in role — master only |
Visibility follows the role
tools/list is filtered by the caller's role, and tools/call enforces the same set —
so a member's bot is not offered user administration, and naming it anyway is refused.
See roles are data.
Deliberately absent
chats.list and chats.messages were built, shipped, and then removed. Calling either
returns {"isError": true, "text": "unknown tool …"}. The UI renders conversations from SQLite;
an agent does not need to enumerate people's threads, and not having the tool is stronger than
scoping it. See the decision.
Cost note
This list is re-sent to the model on every tool-using turn. Descriptions are therefore terse on purpose, and toolset narrowing was measured to make no difference — the fixed cost is Hermes' own prompt, not these schemas. See prompt size.
Rendered from nx-master/mcp/tools.md · OKF bundle · regenerate with npm run render