← Back to Kontasks
L3 Tool Execution API - Full API.md Section
Complete L3 API documentation from API.md (lines 281-411)
Output
L3 Tool Execution API
API.md lines 281-411
Direct file operations from kontask inline scripts. Enables instant reads and searches without starting a Claude turn (~$0, <1s vs ~$0.05, 10s for full turn).
Security: All paths must be within /konnectvol. Directory traversal attempts are rejected.
POST /tools/read
Read file contents.
// Request { "path": "/konnectvol/CLAUDE.md", "offset": 0, // Optional: start line (0-indexed) "limit": 100 // Optional: max lines to read }
// Response (200) { "success": true, "content": "# CLAUDE.md\n\nProject instructions...", "lines": 100, "truncated": true }
Limits: Max file size 1MB, max lines 2000
POST /tools/glob
Find files matching a glob pattern.
// Request { "pattern": "**/*.ts", "path": "/konnectvol/konui/src" // Optional, defaults to /konnectvol }
// Response (200) { "success": true, "files": [ "/konnectvol/konui/src/main.ts", "/konnectvol/konui/src/router.ts" ], "count": 2, "truncated": false }
Limits: Max 100 files
POST /tools/grep
Search for patterns in files.
// Request { "pattern": "TODO|FIXME", // Regex pattern "path": "/konnectvol/konui", // Optional "glob": "**/*.ts", // Optional file filter "maxResults": 10 // Optional, defaults to 100 }
// Response (200) { "success": true, "matches": [ { "file": "/konnectvol/konui/src/router.ts", "line": 42, "content": "// TODO: add rate limiting" } ], "count": 1, "truncated": false }
Limits: Max 100 matches
Client SDK (kontask.tools)
Available on window.kontask.tools in dashboard console kontask cards:
// Read file const result = await kontask.tools.read('/konnectvol/CLAUDE.md', { limit: 20 }); if (result.success) { console.log(result.content); } // Find files const files = await kontask.tools.glob('**/*.ts', '/konnectvol/konui/src'); console.log(files.files); // Search const matches = await kontask.tools.grep('TODO', '/konnectvol', '**/*.ts', 10); matches.matches.forEach(m => console.log(`${m.file}:${m.line}: ${m.content}`));
Quick Actions
Original Request
No layout configured
Details
Type
General
Status
Completed
Scope
vibetools
Tags
docsl3api
Created
7 Jan 2026, 10:22 pm
Updated
7 Jan 2026, 10:22 pm
Timing
⏱️ 44.1s
0 tools
● TTFE 0%
● Thinking 100%
● Tools 0%
Created By
claude
Raw Data
{
"id": "b0b136a6-2085-40da-ad62-5996cf96a80b",
"type": "general",
"status": "completed",
"title": "L3 Tool Execution API - Full API.md Section",
"description": "Complete L3 API documentation from API.md (lines 281-411)",
"context": {
"output": "<div style=\"background:#1e1e1e;color:#e0e0e0;padding:20px;border-radius:8px;font-family:'Consolas','Monaco',monospace;\"><h2 style=\"font-family:sans-serif;color:#fff;margin:0 0 4px 0;\">L3 Tool Execution API</h2><p style=\"color:#7f848e;margin:0 0 16px 0;font-size:0.85rem;\">API.md lines 281-411</p><div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin-bottom:16px;\"><p style=\"color:#9ca3af;margin:0 0 12px 0;\">Direct file operations from kontask inline scripts. Enables instant reads and searches without starting a Claude turn (~$0, <1s vs ~$0.05, 10s for full turn).</p><p style=\"color:#f59e0b;margin:0;\"><strong>Security:</strong> All paths must be within <code style=\"background:#1e1e1e;padding:2px 6px;border-radius:3px;\">/konnectvol</code>. Directory traversal attempts are rejected.</p></div><div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin-bottom:16px;\"><h4 style=\"color:#61afef;margin:0 0 12px 0;\">POST /tools/read</h4><p style=\"color:#7f848e;margin:0 0 8px 0;\">Read file contents.</p><pre style=\"background:#1e1e1e;padding:12px;border-radius:4px;margin:0 0 12px 0;overflow-x:auto;font-size:0.85rem;\"><span style=\"color:#7f848e;\">// Request</span>\n{\n <span style=\"color:#98c379;\">\"path\"</span>: <span style=\"color:#e5c07b;\">\"/konnectvol/CLAUDE.md\"</span>,\n <span style=\"color:#98c379;\">\"offset\"</span>: <span style=\"color:#d19a66;\">0</span>, <span style=\"color:#7f848e;\">// Optional: start line (0-indexed)</span>\n <span style=\"color:#98c379;\">\"limit\"</span>: <span style=\"color:#d19a66;\">100</span> <span style=\"color:#7f848e;\">// Optional: max lines to read</span>\n}</pre><pre style=\"background:#1e1e1e;padding:12px;border-radius:4px;margin:0 0 12px 0;overflow-x:auto;font-size:0.85rem;\"><span style=\"color:#7f848e;\">// Response (200)</span>\n{\n <span style=\"color:#98c379;\">\"success\"</span>: <span style=\"color:#c678dd;\">true</span>,\n <span style=\"color:#98c379;\">\"content\"</span>: <span style=\"color:#e5c07b;\">\"# CLAUDE.md\\n\\nProject instructions...\"</span>,\n <span style=\"color:#98c379;\">\"lines\"</span>: <span style=\"color:#d19a66;\">100</span>,\n <span style=\"color:#98c379;\">\"truncated\"</span>: <span style=\"color:#c678dd;\">true</span>\n}</pre><p style=\"color:#9ca3af;margin:0;\"><strong>Limits:</strong> Max file size 1MB, max lines 2000</p></div><div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin-bottom:16px;\"><h4 style=\"color:#98c379;margin:0 0 12px 0;\">POST /tools/glob</h4><p style=\"color:#7f848e;margin:0 0 8px 0;\">Find files matching a glob pattern.</p><pre style=\"background:#1e1e1e;padding:12px;border-radius:4px;margin:0 0 12px 0;overflow-x:auto;font-size:0.85rem;\"><span style=\"color:#7f848e;\">// Request</span>\n{\n <span style=\"color:#98c379;\">\"pattern\"</span>: <span style=\"color:#e5c07b;\">\"**/*.ts\"</span>,\n <span style=\"color:#98c379;\">\"path\"</span>: <span style=\"color:#e5c07b;\">\"/konnectvol/konui/src\"</span> <span style=\"color:#7f848e;\">// Optional, defaults to /konnectvol</span>\n}</pre><pre style=\"background:#1e1e1e;padding:12px;border-radius:4px;margin:0 0 12px 0;overflow-x:auto;font-size:0.85rem;\"><span style=\"color:#7f848e;\">// Response (200)</span>\n{\n <span style=\"color:#98c379;\">\"success\"</span>: <span style=\"color:#c678dd;\">true</span>,\n <span style=\"color:#98c379;\">\"files\"</span>: [\n <span style=\"color:#e5c07b;\">\"/konnectvol/konui/src/main.ts\"</span>,\n <span style=\"color:#e5c07b;\">\"/konnectvol/konui/src/router.ts\"</span>\n ],\n <span style=\"color:#98c379;\">\"count\"</span>: <span style=\"color:#d19a66;\">2</span>,\n <span style=\"color:#98c379;\">\"truncated\"</span>: <span style=\"color:#c678dd;\">false</span>\n}</pre><p style=\"color:#9ca3af;margin:0;\"><strong>Limits:</strong> Max 100 files</p></div><div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin-bottom:16px;\"><h4 style=\"color:#f59e0b;margin:0 0 12px 0;\">POST /tools/grep</h4><p style=\"color:#7f848e;margin:0 0 8px 0;\">Search for patterns in files.</p><pre style=\"background:#1e1e1e;padding:12px;border-radius:4px;margin:0 0 12px 0;overflow-x:auto;font-size:0.85rem;\"><span style=\"color:#7f848e;\">// Request</span>\n{\n <span style=\"color:#98c379;\">\"pattern\"</span>: <span style=\"color:#e5c07b;\">\"TODO|FIXME\"</span>, <span style=\"color:#7f848e;\">// Regex pattern</span>\n <span style=\"color:#98c379;\">\"path\"</span>: <span style=\"color:#e5c07b;\">\"/konnectvol/konui\"</span>, <span style=\"color:#7f848e;\">// Optional</span>\n <span style=\"color:#98c379;\">\"glob\"</span>: <span style=\"color:#e5c07b;\">\"**/*.ts\"</span>, <span style=\"color:#7f848e;\">// Optional file filter</span>\n <span style=\"color:#98c379;\">\"maxResults\"</span>: <span style=\"color:#d19a66;\">10</span> <span style=\"color:#7f848e;\">// Optional, defaults to 100</span>\n}</pre><pre style=\"background:#1e1e1e;padding:12px;border-radius:4px;margin:0 0 12px 0;overflow-x:auto;font-size:0.85rem;\"><span style=\"color:#7f848e;\">// Response (200)</span>\n{\n <span style=\"color:#98c379;\">\"success\"</span>: <span style=\"color:#c678dd;\">true</span>,\n <span style=\"color:#98c379;\">\"matches\"</span>: [\n {\n <span style=\"color:#98c379;\">\"file\"</span>: <span style=\"color:#e5c07b;\">\"/konnectvol/konui/src/router.ts\"</span>,\n <span style=\"color:#98c379;\">\"line\"</span>: <span style=\"color:#d19a66;\">42</span>,\n <span style=\"color:#98c379;\">\"content\"</span>: <span style=\"color:#e5c07b;\">\"// TODO: add rate limiting\"</span>\n }\n ],\n <span style=\"color:#98c379;\">\"count\"</span>: <span style=\"color:#d19a66;\">1</span>,\n <span style=\"color:#98c379;\">\"truncated\"</span>: <span style=\"color:#c678dd;\">false</span>\n}</pre><p style=\"color:#9ca3af;margin:0;\"><strong>Limits:</strong> Max 100 matches</p></div><div style=\"background:#2d2d2d;padding:16px;border-radius:6px;\"><h4 style=\"color:#c678dd;margin:0 0 12px 0;\">Client SDK (kontask.tools)</h4><p style=\"color:#7f848e;margin:0 0 8px 0;\">Available on <code style=\"background:#1e1e1e;padding:2px 6px;border-radius:3px;\">window.kontask.tools</code> in dashboard console kontask cards:</p><pre style=\"background:#1e1e1e;padding:12px;border-radius:4px;margin:0;overflow-x:auto;font-size:0.85rem;\"><span style=\"color:#7f848e;\">// Read file</span>\n<span style=\"color:#c678dd;\">const</span> result = <span style=\"color:#c678dd;\">await</span> kontask.tools.<span style=\"color:#61afef;\">read</span>(<span style=\"color:#e5c07b;\">'/konnectvol/CLAUDE.md'</span>, { limit: <span style=\"color:#d19a66;\">20</span> });\n<span style=\"color:#c678dd;\">if</span> (result.success) {\n console.<span style=\"color:#61afef;\">log</span>(result.content);\n}\n\n<span style=\"color:#7f848e;\">// Find files</span>\n<span style=\"color:#c678dd;\">const</span> files = <span style=\"color:#c678dd;\">await</span> kontask.tools.<span style=\"color:#61afef;\">glob</span>(<span style=\"color:#e5c07b;\">'**/*.ts'</span>, <span style=\"color:#e5c07b;\">'/konnectvol/konui/src'</span>);\nconsole.<span style=\"color:#61afef;\">log</span>(files.files);\n\n<span style=\"color:#7f848e;\">// Search</span>\n<span style=\"color:#c678dd;\">const</span> matches = <span style=\"color:#c678dd;\">await</span> kontask.tools.<span style=\"color:#61afef;\">grep</span>(<span style=\"color:#e5c07b;\">'TODO'</span>, <span style=\"color:#e5c07b;\">'/konnectvol'</span>, <span style=\"color:#e5c07b;\">'**/*.ts'</span>, <span style=\"color:#d19a66;\">10</span>);\nmatches.matches.<span style=\"color:#61afef;\">forEach</span>(m => console.<span style=\"color:#61afef;\">log</span>(<span style=\"color:#e5c07b;\">`${m.file}:${m.line}: ${m.content}`</span>));</pre></div></div>",
"requestedAt": "2026-01-07T12:22:00.000Z",
"requestId": "6ee4d591-25f8-4574-ac6e-cb8206d217ac",
"choices": [
{
"label": "Test the API",
"value": "Create an interactive test card for the L3 tools API",
"primary": true
},
{
"label": "View full API.md",
"value": "Show me the complete API.md file"
},
{
"label": "Done with L3",
"value": "L3 is complete - what should we work on next?"
}
],
"turnTiming": {
"totalMs": 44126,
"ttfeMs": 69,
"thinkingMs": 44057,
"toolExecutionMs": 0,
"toolCallCount": 0,
"thinkingPct": 100,
"toolsPct": 0,
"ttfePct": 0
}
},
"createdBy": "claude",
"createdAt": "2026-01-07T12:22:37.750Z",
"updatedAt": "2026-01-07T12:22:43.048Z",
"requestId": "6ee4d591-25f8-4574-ac6e-cb8206d217ac",
"scope": "vibetools",
"tags": [
"docs",
"l3",
"api"
],
"targetUser": "claude"
}