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

GET/api/v2/toolsAuthenticated

List all available tools. Filter by category or choose between full and deferred schema mode.

Query Parameters

categorystring

Filter by category: web, email, ai, apps, data, agent, meta.

modestring

full (default) returns inputSchema. deferred returns lightweight stubs.

Request

cURL
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
}
GET/api/v2/tools/:nameAuthenticated

Get full details for a specific tool including its schema and prompt helper.

Path Parameters

namestringrequired

Tool name (e.g. web_search, send_email).

Request

cURL
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

POST/api/v2/tools/:name/executeAuthenticated

Execute a tool with the provided input. Input is validated against the JSON schema before execution.

Path Parameters

namestringrequired

Name of the tool to execute.

Body Parameters

inputobjectrequired

Tool input matching the inputSchema.

contextobject

Execution context (userId, workspaceId).

Request

cURL
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

GET/api/v2/tools/searchAuthenticated

Search tools by keyword. Returns full schemas for matched tools ranked by relevance.

Query Parameters

qstringrequired

Search query matched against name, description, and category.

max_resultsnumber

Maximum tools to return (default 5).

Request

cURL
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

GET/api/v2/tools/permissionsAuthenticated

Get the current tool permission configuration for the workspace.

Request

cURL
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
  }
}
PUT/api/v2/tools/permissionsAuthenticated

Update tool permission configuration. Requires workspace admin.

Body Parameters

modestringrequired

Permission mode: open, gated, plan, or audit.

rulesarray

Array of allow/deny rules by category or tool name.

audit_logboolean

Enable audit logging for all tool executions.

Request

cURL
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"
  }
}