Tools API
LVNG ships 22 self-contained tools across 7 categories. The ToolRegistry auto-discovers tools at startup. Each tool exposes a name, description, category, JSON input schema, and an execute handler. Progressive discovery via the tool_search meta-tool lets agents find tools at runtime without loading all definitions upfront.
Base path: /api/v2/tools
Discovery
/api/v2/toolsAuthenticatedList all available tools. Filter by category or choose between full and deferred schema mode.
Query Parameters
categorystringFilter by category: web, email, ai, apps, data, agent, meta.
modestringfull (default) returns inputSchema. deferred returns lightweight stubs.
Request
400">curl -X 400">GET 400">class="text-emerald-400">"https:400">class="text-zinc-500">//api.lvng.ai/api/v2/tools?category=web" \
-H 400">class="text-emerald-400">"Authorization: Bearer YOUR_API_KEY"Response 200
{
400">class="text-emerald-400">"success": true,
400">class="text-emerald-400">"tools": [
{
400">class="text-emerald-400">"name": 400">class="text-emerald-400">"web_search",
400">class="text-emerald-400">"description": 400">class="text-emerald-400">"Search the web and 400">return relevant results.",
400">class="text-emerald-400">"category": 400">class="text-emerald-400">"web",
400">class="text-emerald-400">"isReadOnly": true,
400">class="text-emerald-400">"inputSchema": {
400">class="text-emerald-400">"400">type": 400">class="text-emerald-400">"object",
400">class="text-emerald-400">"properties": {
400">class="text-emerald-400">"query": { 400">class="text-emerald-400">"400">type": 400">class="text-emerald-400">"string" },
400">class="text-emerald-400">"max_results": { 400">class="text-emerald-400">"400">type": 400">class="text-emerald-400">"integer", 400">class="text-emerald-400">"400">default": 5 }
},
400">class="text-emerald-400">"required": [400">class="text-emerald-400">"query"]
}
}
],
400">class="text-emerald-400">"total": 3
}/api/v2/tools/:nameAuthenticatedGet full details for a specific tool including its schema and prompt helper.
Path Parameters
namestringrequiredTool name (e.g. web_search, send_email).
Request
400">curl -X 400">GET https:400">class="text-zinc-500">//api.lvng.ai/api/v2/tools/send_email \
-H 400">class="text-emerald-400">"Authorization: Bearer YOUR_API_KEY"Response 200
{
400">class="text-emerald-400">"success": true,
400">class="text-emerald-400">"tool": {
400">class="text-emerald-400">"name": 400">class="text-emerald-400">"send_email",
400">class="text-emerald-400">"description": 400">class="text-emerald-400">"Send an email 400">from a connected account.",
400">class="text-emerald-400">"category": 400">class="text-emerald-400">"email",
400">class="text-emerald-400">"isReadOnly": false,
400">class="text-emerald-400">"inputSchema": {
400">class="text-emerald-400">"400">type": 400">class="text-emerald-400">"object",
400">class="text-emerald-400">"properties": {
400">class="text-emerald-400">"to": { 400">class="text-emerald-400">"400">type": 400">class="text-emerald-400">"string" },
400">class="text-emerald-400">"subject": { 400">class="text-emerald-400">"400">type": 400">class="text-emerald-400">"string" },
400">class="text-emerald-400">"body": { 400">class="text-emerald-400">"400">type": 400">class="text-emerald-400">"string" }
},
400">class="text-emerald-400">"required": [400">class="text-emerald-400">"to", 400">class="text-emerald-400">"subject", 400">class="text-emerald-400">"body"]
}
}
}Execution
/api/v2/tools/:name/executeAuthenticatedExecute a tool with the provided input. Input is validated against the JSON schema before execution.
Path Parameters
namestringrequiredName of the tool to execute.
Body Parameters
inputobjectrequiredTool input matching the inputSchema.
contextobjectExecution context (userId, workspaceId).
Request
400">curl -X 400">POST https:400">class="text-zinc-500">//api.lvng.ai/api/v2/tools/web_search/execute \
-H 400">class="text-emerald-400">"Authorization: Bearer YOUR_API_KEY" \
-H 400">class="text-emerald-400">"Content-Type: application/json" \
-d '{
400">class="text-emerald-400">"input": { 400">class="text-emerald-400">"query": 400">class="text-emerald-400">"LVNG AI platform", 400">class="text-emerald-400">"max_results": 3 }
}'Response 200
{
400">class="text-emerald-400">"success": true,
400">class="text-emerald-400">"result": [
{
400">class="text-emerald-400">"title": 400">class="text-emerald-400">"LVNG - Autonomous AI Agents",
400">class="text-emerald-400">"url": 400">class="text-emerald-400">"https:400">class="text-zinc-500">//lvng.ai",
400">class="text-emerald-400">"snippet": 400">class="text-emerald-400">"Multi-agent AI platform for workflow execution."
}
],
400">class="text-emerald-400">"tool": 400">class="text-emerald-400">"web_search",
400">class="text-emerald-400">"executionTime": 842
}Progressive Discovery
/api/v2/tools/searchAuthenticatedSearch tools by keyword. Returns full schemas for matched tools ranked by relevance.
Query Parameters
qstringrequiredSearch query matched against name, description, and category.
max_resultsnumberMaximum tools to return (default 5).
Request
400">curl -X 400">GET 400">class="text-emerald-400">"https:400">class="text-zinc-500">//api.lvng.ai/api/v2/tools/search?q=email" \
-H 400">class="text-emerald-400">"Authorization: Bearer YOUR_API_KEY"Response 200
{
400">class="text-emerald-400">"success": true,
400">class="text-emerald-400">"query": 400">class="text-emerald-400">"email",
400">class="text-emerald-400">"tools": [
{ 400">class="text-emerald-400">"name": 400">class="text-emerald-400">"send_email", 400">class="text-emerald-400">"description": 400">class="text-emerald-400">"Send an email.", 400">class="text-emerald-400">"category": 400">class="text-emerald-400">"email" },
{ 400">class="text-emerald-400">"name": 400">class="text-emerald-400">"read_emails", 400">class="text-emerald-400">"description": 400">class="text-emerald-400">"Read emails 400">from inbox.", 400">class="text-emerald-400">"category": 400">class="text-emerald-400">"email" },
{ 400">class="text-emerald-400">"name": 400">class="text-emerald-400">"search_emails", 400">class="text-emerald-400">"description": 400">class="text-emerald-400">"Search emails by query.", 400">class="text-emerald-400">"category": 400">class="text-emerald-400">"email" }
],
400">class="text-emerald-400">"total": 3
}Permissions
/api/v2/tools/permissionsAuthenticatedGet the current tool permission configuration for the workspace.
Request
400">curl -X 400">GET https:400">class="text-zinc-500">//api.lvng.ai/api/v2/tools/permissions \
-H 400">class="text-emerald-400">"Authorization: Bearer YOUR_API_KEY"Response 200
{
400">class="text-emerald-400">"success": true,
400">class="text-emerald-400">"permissions": {
400">class="text-emerald-400">"mode": 400">class="text-emerald-400">"gated",
400">class="text-emerald-400">"rules": [
{ 400">class="text-emerald-400">"category": 400">class="text-emerald-400">"web", 400">class="text-emerald-400">"allow": true },
{ 400">class="text-emerald-400">"category": 400">class="text-emerald-400">"email", 400">class="text-emerald-400">"allow": false }
],
400">class="text-emerald-400">"audit_log": true
}
}/api/v2/tools/permissionsAuthenticatedUpdate tool permission configuration. Requires workspace admin.
Body Parameters
modestringrequiredPermission mode: open, gated, plan, or audit.
rulesarrayArray of allow/deny rules by category or tool name.
audit_logbooleanEnable audit logging for all tool executions.
Request
400">curl -X 400">PUT https:400">class="text-zinc-500">//api.lvng.ai/api/v2/tools/permissions \
-H 400">class="text-emerald-400">"Authorization: Bearer YOUR_API_KEY" \
-H 400">class="text-emerald-400">"Content-Type: application/json" \
-d '{
400">class="text-emerald-400">"mode": 400">class="text-emerald-400">"gated",
400">class="text-emerald-400">"rules": [{ 400">class="text-emerald-400">"category": 400">class="text-emerald-400">"web", 400">class="text-emerald-400">"allow": true }],
400">class="text-emerald-400">"audit_log": true
}'Response 200
{
400">class="text-emerald-400">"success": true,
400">class="text-emerald-400">"permissions": {
400">class="text-emerald-400">"mode": 400">class="text-emerald-400">"gated",
400">class="text-emerald-400">"rules": [{ 400">class="text-emerald-400">"category": 400">class="text-emerald-400">"web", 400">class="text-emerald-400">"allow": true }],
400">class="text-emerald-400">"audit_log": true,
400">class="text-emerald-400">"updated_at": 400">class="text-emerald-400">"2026-04-01T12:00:00.000Z"
}
}