Custom Tools
Register narrow app-specific native Android tools for local development operations that the packaged suites do not cover.
Custom tools let app code expose a focused local development operation through the same guarded remote-tool protocol as the packaged suites.
Register a Tool
import ai.ansight.runtime.AndroidToolResult
import ai.ansight.runtime.AnsightOptions
import ai.ansight.runtime.ToolScope
import ai.ansight.runtime.androidSimpleTool
import org.json.JSONObject
val tool = androidSimpleTool(
id = "app.current_user",
name = "Current User",
description = "Returns the current debug user id.",
category = "app",
scope = ToolScope.Read,
keywords = "app user debug",
) { _, _ ->
AndroidToolResult.success(
JSONObject().put("userId", session.currentUserId)
)
}
val options = AnsightOptions.createBuilder()
.addTool(tool)
.withReadOnlyToolAccess()
.build()
Registration API
addTool(...): adds one tool to options before runtime initialization.addTools(...): adds multiple tools to options before runtime initialization.registerTool(...): registers a tool at runtime.isToolRegistered(...): checks whether a tool id is currently registered.
Specific Concerns
- Prefer narrow, app-specific operations.
- Choose the correct scope:
ToolScope.Read,ToolScope.Write, orToolScope.Delete. - Do not expose broad scripting, arbitrary file access, or secret access through custom tools.
- Registered tools are still hidden and unusable until the runtime guard allows their scope.
Tool Definition Checklist
- Stable tool id, usually under an app-owned prefix such as
app. - Clear name and description
- Category and keywords that match the workflow
- Correct scope
- Explicit argument validation and failure messages
- Structured JSON result payloads for callers