← Back to Kontasks
L3 Tool Execution API - Interactive Test
Interactive demo of kontask.tools.read, glob, and grep APIs
Output
๐งช L3 Tool Execution API Test
Click any button below to test the L3 API tools directly from this kontask card - no Claude turn required!
๐ kontask.tools.read()
Read file contents with optional offset/limit
Click a button to test...
๐ kontask.tools.glob()
Find files matching a glob pattern
Click a button to test...
๐ kontask.tools.grep()
Search for patterns in files
Click a button to test...
โน๏ธ How It Works
These buttons call kontask.tools.* methods which hit /api/kontasks/tools/* endpoints directly. No Claude turn needed - results appear instantly (~100ms).
Quick Actions
Original Request
No layout configured
Details
Type
General
Status
Completed
Scope
vibetools
Tags
kontasksl3apitools
Created
7 Jan 2026, 10:12 pm
Updated
7 Jan 2026, 10:13 pm
Timing
โฑ๏ธ 44.0s
0 tools
โ TTFE 0%
โ Thinking 100%
โ Tools 0%
Created By
claude
Raw Data
{
"id": "fbe35d05-b288-4438-8082-8a4dc4132a10",
"type": "general",
"status": "completed",
"title": "L3 Tool Execution API - Interactive Test",
"description": "Interactive demo of kontask.tools.read, glob, and grep APIs",
"context": {
"output": "<div style=\"background:#1e1e1e;color:#e0e0e0;padding:20px;border-radius:8px;font-family:sans-serif;\"><h2 style=\"color:#fff;margin:0 0 16px 0;\">๐งช L3 Tool Execution API Test</h2><p style=\"color:#9ca3af;margin:0 0 16px 0;\">Click any button below to test the L3 API tools directly from this kontask card - <strong>no Claude turn required!</strong></p><div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin-bottom:16px;\"><h4 style=\"color:#61afef;margin:0 0 12px 0;\">๐ kontask.tools.read()</h4><p style=\"color:#7f848e;margin:0 0 12px 0;font-size:0.9rem;\">Read file contents with optional offset/limit</p><div id=\"read-result\" style=\"background:#1e1e1e;padding:12px;border-radius:4px;min-height:60px;margin-bottom:12px;\"><span style=\"color:#7f848e;\">Click a button to test...</span></div><div style=\"display:flex;gap:8px;flex-wrap:wrap;\"><button id=\"read-claude\" style=\"background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;font-weight:500;\">Read CLAUDE.md (first 10 lines)</button><button id=\"read-router\" style=\"background:linear-gradient(135deg,#8b5cf6,#7c3aed);color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;font-weight:500;\">Read router.ts (lines 500-510)</button></div></div><div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin-bottom:16px;\"><h4 style=\"color:#98c379;margin:0 0 12px 0;\">๐ kontask.tools.glob()</h4><p style=\"color:#7f848e;margin:0 0 12px 0;font-size:0.9rem;\">Find files matching a glob pattern</p><div id=\"glob-result\" style=\"background:#1e1e1e;padding:12px;border-radius:4px;min-height:60px;margin-bottom:12px;\"><span style=\"color:#7f848e;\">Click a button to test...</span></div><div style=\"display:flex;gap:8px;flex-wrap:wrap;\"><button id=\"glob-tests\" style=\"background:linear-gradient(135deg,#22c55e,#16a34a);color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;font-weight:500;\">Find *.test.ts in konui</button><button id=\"glob-main\" style=\"background:linear-gradient(135deg,#06b6d4,#0891b2);color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;font-weight:500;\">Find main.ts files</button></div></div><div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin-bottom:16px;\"><h4 style=\"color:#f59e0b;margin:0 0 12px 0;\">๐ kontask.tools.grep()</h4><p style=\"color:#7f848e;margin:0 0 12px 0;font-size:0.9rem;\">Search for patterns in files</p><div id=\"grep-result\" style=\"background:#1e1e1e;padding:12px;border-radius:4px;min-height:60px;margin-bottom:12px;\"><span style=\"color:#7f848e;\">Click a button to test...</span></div><div style=\"display:flex;gap:8px;flex-wrap:wrap;\"><button id=\"grep-todo\" style=\"background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;font-weight:500;\">Search \"TODO\" in konui</button><button id=\"grep-kontask\" style=\"background:linear-gradient(135deg,#f43f5e,#e11d48);color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;font-weight:500;\">Search \"kontask\" in router.ts</button></div></div><div style=\"background:#22543d;padding:12px;border-radius:6px;\"><h4 style=\"color:#68d391;margin:0 0 8px 0;\">โน๏ธ How It Works</h4><p style=\"color:#9ca3af;margin:0;font-size:0.9rem;\">These buttons call <code style=\"background:#1e1e1e;padding:2px 6px;border-radius:3px;\">kontask.tools.*</code> methods which hit <code style=\"background:#1e1e1e;padding:2px 6px;border-radius:3px;\">/api/kontasks/tools/*</code> endpoints directly. No Claude turn needed - results appear instantly (~100ms).</p></div></div><script>(function(){function escapeHtml(t){return t.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>');}document.getElementById('read-claude').addEventListener('click',async function(){const el=document.getElementById('read-result');el.innerHTML='<span style=\"color:#f59e0b;\">Loading...</span>';try{const r=await kontask.tools.read('/konnectvol/CLAUDE.md',{limit:10});if(r.success){el.innerHTML='<pre style=\"margin:0;white-space:pre-wrap;font-size:0.85rem;color:#98c379;\">'+escapeHtml(r.content)+'</pre><p style=\"margin:8px 0 0 0;color:#7f848e;font-size:0.8rem;\">Lines: '+r.lines+(r.truncated?' (truncated)':'')+'</p>';}else{el.innerHTML='<span style=\"color:#ef4444;\">Error: '+r.error+'</span>';}}catch(e){el.innerHTML='<span style=\"color:#ef4444;\">Error: '+e+'</span>';}});document.getElementById('read-router').addEventListener('click',async function(){const el=document.getElementById('read-result');el.innerHTML='<span style=\"color:#f59e0b;\">Loading...</span>';try{const r=await kontask.tools.read('/konnectvol/konui/src/router.ts',{offset:500,limit:10});if(r.success){el.innerHTML='<pre style=\"margin:0;white-space:pre-wrap;font-size:0.85rem;color:#61afef;\">'+escapeHtml(r.content)+'</pre><p style=\"margin:8px 0 0 0;color:#7f848e;font-size:0.8rem;\">Lines: '+r.lines+' (offset 500)'+(r.truncated?' truncated':'')+'</p>';}else{el.innerHTML='<span style=\"color:#ef4444;\">Error: '+r.error+'</span>';}}catch(e){el.innerHTML='<span style=\"color:#ef4444;\">Error: '+e+'</span>';}});document.getElementById('glob-tests').addEventListener('click',async function(){const el=document.getElementById('glob-result');el.innerHTML='<span style=\"color:#f59e0b;\">Loading...</span>';try{const r=await kontask.tools.glob('**/*.test.ts','/konnectvol/konui');if(r.success){el.innerHTML='<pre style=\"margin:0;font-size:0.85rem;color:#98c379;\">'+r.files.join('\\n')+'</pre><p style=\"margin:8px 0 0 0;color:#7f848e;font-size:0.8rem;\">Found: '+r.count+' files</p>';}else{el.innerHTML='<span style=\"color:#ef4444;\">Error: '+r.error+'</span>';}}catch(e){el.innerHTML='<span style=\"color:#ef4444;\">Error: '+e+'</span>';}});document.getElementById('glob-main').addEventListener('click',async function(){const el=document.getElementById('glob-result');el.innerHTML='<span style=\"color:#f59e0b;\">Loading...</span>';try{const r=await kontask.tools.glob('**/main.ts','/konnectvol');if(r.success){el.innerHTML='<pre style=\"margin:0;font-size:0.85rem;color:#06b6d4;\">'+r.files.join('\\n')+'</pre><p style=\"margin:8px 0 0 0;color:#7f848e;font-size:0.8rem;\">Found: '+r.count+' files</p>';}else{el.innerHTML='<span style=\"color:#ef4444;\">Error: '+r.error+'</span>';}}catch(e){el.innerHTML='<span style=\"color:#ef4444;\">Error: '+e+'</span>';}});document.getElementById('grep-todo').addEventListener('click',async function(){const el=document.getElementById('grep-result');el.innerHTML='<span style=\"color:#f59e0b;\">Loading...</span>';try{const r=await kontask.tools.grep('TODO','/konnectvol/konui','**/*.ts',5);if(r.success){const html=r.matches.map(m=>'<div style=\"margin-bottom:4px;\"><span style=\"color:#7f848e;\">'+escapeHtml(m.file)+':'+m.line+'</span> <span style=\"color:#e5c07b;\">'+escapeHtml(m.content.trim())+'</span></div>').join('');el.innerHTML=html+'<p style=\"margin:8px 0 0 0;color:#7f848e;font-size:0.8rem;\">Matches: '+r.count+(r.truncated?' (showing first 5)':'')+'</p>';}else{el.innerHTML='<span style=\"color:#ef4444;\">Error: '+r.error+'</span>';}}catch(e){el.innerHTML='<span style=\"color:#ef4444;\">Error: '+e+'</span>';}});document.getElementById('grep-kontask').addEventListener('click',async function(){const el=document.getElementById('grep-result');el.innerHTML='<span style=\"color:#f59e0b;\">Loading...</span>';try{const r=await kontask.tools.grep('kontask','/konnectvol/konui/src/router.ts',null,5);if(r.success){const html=r.matches.map(m=>'<div style=\"margin-bottom:4px;\"><span style=\"color:#7f848e;\">Line '+m.line+':</span> <span style=\"color:#f43f5e;\">'+escapeHtml(m.content.trim())+'</span></div>').join('');el.innerHTML=html+'<p style=\"margin:8px 0 0 0;color:#7f848e;font-size:0.8rem;\">Matches: '+r.count+(r.truncated?' (truncated)':'')+'</p>';}else{el.innerHTML='<span style=\"color:#ef4444;\">Error: '+r.error+'</span>';}}catch(e){el.innerHTML='<span style=\"color:#ef4444;\">Error: '+e+'</span>';}});})();</script>",
"requestedAt": "2026-01-07T12:12:00.000Z",
"requestId": "44a1e506-a607-4465-b30c-edcd3ccdfd4c",
"turnTiming": {
"totalMs": 44049,
"ttfeMs": 49,
"thinkingMs": 44000,
"toolExecutionMs": 0,
"toolCallCount": 0,
"thinkingPct": 100,
"toolsPct": 0,
"ttfePct": 0
}
},
"createdBy": "claude",
"createdAt": "2026-01-07T12:12:56.654Z",
"updatedAt": "2026-01-07T12:13:01.633Z",
"requestId": "44a1e506-a607-4465-b30c-edcd3ccdfd4c",
"scope": "vibetools",
"tags": [
"kontasks",
"l3",
"api",
"tools"
],
"targetUser": "claude"
}