Tool Shape
The canonical shape isToolDefinition from @cyrnel/sdk:
(serviceId, id)is the composite primary key. Toolidmust be a valid TypeScript identifier.nameis human-friendly;idis what code addresses.enabledis per-tool, a service can be enabled with some of its tools disabled.
Endpoints
Filtering /tools
Query parameters (all optional):
serviceId: Restrict to one servicequery: Case-insensitive substring match againstnameanddescriptionenabled:true/falselimit: Positive integer
effectivelyEnabled flag:
tool.enabled && service.enabled. Use it when deciding what to surface to
clients.
Tool docs
GET /tools/:serviceId/:toolId/docs returns text/markdown generated by
the active environment module’s generateToolDocs. The bundled
typescript-ivm renders a usage page including:
- the tool description
- a typed parameter list derived from
inputSchema - the return shape derived from
outputSchema - a copy-pasteable
cyrnel.services[...].tools[...].invoke(...)snippet
generateToolDocs should render an example in that runtime.
Invocation From Code
The environment bindings expose tools for direct invocation:EnvironmentBindings.
Invocation Gating
cyrnel.invoke rejects with a structured error when:
These checks happen before the adapter is called, so a disabled tool
cannot incur an outbound request.