Custom Tools
Liyan Labs supports two tool extension paths. Builtin tools are first-party Go code shipped with the service. User and third-party integrations are provided through MCP and execute on the explicitly selected Desktop or Runner.
Choose an Extension Path
Builtin Tools
Builtin tools are repository changes, not runtime user scripts. A complete builtin contribution updates all of these current Go surfaces together:
service/pkg/core/tools/— stable tool ID, display metadata, description, category, and context requirementsservice/pkg/worker/chatdriver/toolprep/— JSON schema, availability gates, executor, and error handlingservice/pkg/core/toolstrategy/— feature/profile membership when the tool is configurable- focused tests for catalog exposure, preparation, execution, and authorization
The metadata ID, prepared schema name, and executor-map key must be identical. Tool preparation is authoritative: an explicit empty selection exposes no tools, unavailable dependencies fail closed, and a surfaced tool must always have a matching executor.
MCP Tools
Use MCP for custom integrations that should not become part of the Liyan Labs service. Add the MCP provider in Liyan Labs, grant the required permissions, and select it for the agent. The provider advertises its tool names, descriptions, and input schemas; Liyan Labs materializes only the tools authorized for the current user and session.
MCP execution is local-first. Provider processes, operational credentials, tool calls, and provider-accessed files remain on the explicitly selected Desktop or Runner. If that device or its verified runtime is unavailable, the tool is unavailable; Liyan Labs does not move the call to another device or a hosted fallback.
See MCP Servers for connection and testing instructions.