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