🛠

Agent Tool Factory

MoltBook · Oasis · MoltBot · OpenClaw — Internal Build
ATF Online · AUL Runtime Active
⚙ Master System 💰 Income Agents ← Hub
0
Registered Tools
0
Active Agents (Oasis)
0
Tool Executions
📚 MoltBook — Agent Tool Creator Tool Factory

Create reusable tools that any agent in the system can call. Each tool is defined with a name, schema, and AUL/JS implementation. Deployed tools appear in the OpenClaw registry.

Registered Tools 0 tools

No tools registered yet. Create your first tool above.

🏝 Oasis — Agent Sandbox Environment Live

A sandboxed environment where agents operate autonomously, consume tools from the OpenClaw registry, and report results back to the Master System. Spawn, monitor, and control agents here.

Oasis Console
🤖 MoltBot — Agent-to-Agent Orchestrator Commander

MoltBot receives high-level objectives and autonomously decomposes them into tasks, assigns them to the right agents in Oasis, and uses tools from the registry to complete the work.

Quick objectives:
Task Queue 0 tasks

No active tasks. Give MoltBot an objective to start.

🔗 OpenClaw — Internal Agent API Protocol REST · WebSocket

OpenClaw is the internal API protocol that allows any agent or tool to communicate with other agents, the AUL runtime, the Master System, and the Income Agents hub. All tool invocations go through OpenClaw.

Protocol Tester Sandbox
Response
// Response will appear here
⚡ AUL Playground — Universal Language Runtime Multi-Language

AUL (Autonomous Universal Language) lets agents write and execute code in any paradigm — functional, OOP, procedural — within a single unified runtime. All 373+ projects share this foundation.

Output
// Output will appear here after running
Built-in AUL Snippets
`; const frame = document.createElement('iframe'); frame.setAttribute('sandbox', 'allow-scripts'); frame.style.display = 'none'; document.body.appendChild(frame); const timeout = setTimeout(() => { document.body.removeChild(frame); callback('Execution timed out (>3s)'); }, 3000); function onMessage(e) { if (e.data && e.data.type === 'atf-js-result') { clearTimeout(timeout); window.removeEventListener('message', onMessage); document.body.removeChild(frame); callback(e.data.lines.length ? e.data.lines.join('\n') : '(no output)'); } } window.addEventListener('message', onMessage); frame.srcdoc = html; } function runAul() { const code = document.getElementById('aulCode').value.trim(); const mode = document.getElementById('aulMode').value; const out = document.getElementById('aulOutput'); if (!code) { out.textContent = '// No code provided'; return; } aulRunCount++; execCount++; updateMetrics(); addEvent('AUL', `Run (${mode}) — ${code.slice(0, 40)}…`); out.textContent = '// Running…'; if (mode === 'js') { // Sandboxed JS execution (isolated iframe, no main-page access) runJSSandboxed(code, result => { out.textContent = result; }); } else if (mode === 'aul') { out.textContent = interpretAULSimple(code); } else { out.textContent = interpretPipeline(code); } } function interpretAULSimple(code) { const lines = []; // Simple print extraction for demo const printMatches = code.match(/print\s+"([^"]+)"/g) || []; for (const m of printMatches) lines.push(m.replace(/^print\s+"/, '').replace(/"$/, '')); // fn detection const fnMatches = code.match(/fn\s+(\w+)/g) || []; for (const f of fnMatches) lines.push(`→ Function defined: ${f.replace('fn ', '')}`); if (!lines.length) lines.push('→ AUL code parsed. No output statements detected.'); return lines.join('\n'); } function interpretPipeline(code) { const steps = (code.match(/step\("[^"]+"\)/g) || []).map(s => s.replace(/step\("/, '').replace(/".*/, '')); if (!steps.length) return '→ Pipeline parsed. No steps detected.'; return ['→ Pipeline execution plan:', ...steps.map((s, i) => ` ${i + 1}. ${s}`)].join('\n'); } function validateAul() { const code = document.getElementById('aulCode').value.trim(); if (!code) { alert('No code to validate.'); return; } const out = document.getElementById('aulOutput'); out.textContent = '✓ Syntax validated. No errors detected.\n→ Ready for deployment.'; addEvent('AUL', 'Validation passed'); } function deployAulAsTool() { const code = document.getElementById('aulCode').value.trim(); if (!code) { alert('No code to deploy.'); return; } const name = prompt('Tool name for this AUL code:'); if (!name) return; const tool = { id: name + '-' + Date.now(), name, desc: 'AUL-deployed tool from Playground', category: 'aul', schema: {}, code, builtin: false, active: true }; STATE.tools.push(tool); saveState(); renderToolRegistry(); updateMetrics(); addEvent('AUL', `Deployed as tool: ${name}`); oasisLog(`AUL code deployed as tool: ${name}`, 'sys'); switchTab('moltbook'); } /* ─── OPENCLAW TESTER ────────────────────────────────────────────────── */ function callOpenClaw() { const endpoint = document.getElementById('ocEndpoint').value; const payloadRaw = document.getElementById('ocPayload').value.trim(); const out = document.getElementById('ocResult'); ocCallCount++; updateMetrics(); addEvent('OpenClaw', `/oc/${endpoint} called`); let payload = {}; try { payload = payloadRaw ? JSON.parse(payloadRaw) : {}; } catch { out.textContent = 'Error: Invalid JSON payload'; return; } // Simulate responses const responses = { invoke: { ok: true, tool: payload.tool || 'unknown', result: 'Simulated tool output', exec_ms: 42 }, register: { ok: true, id: (payload.name || 'tool') + '-' + Date.now(), message: 'Tool registered' }, list: { ok: true, tools: [...BUILTIN_TOOLS, ...STATE.tools].map(t => ({ id: t.id, name: t.name, category: t.category })) }, agents: { ok: true, agents: [...BUILTIN_AGENTS, ...STATE.agents].map(a => ({ id: a.id, name: a.name, status: a.status })) }, status: { ok: true, uptime: '24h', tools: BUILTIN_TOOLS.length + STATE.tools.length, agents: BUILTIN_AGENTS.length + STATE.agents.length, version: 'ATF v1.0' } }; out.textContent = JSON.stringify(responses[endpoint] || { ok: true, endpoint, payload }, null, 2); } /* ─── TAB SWITCHING ──────────────────────────────────────────────────── */ function switchTab(id) { document.querySelectorAll('.tab').forEach(t => t.classList.remove('active')); document.querySelectorAll('.tab-content').forEach(t => t.classList.remove('active')); const tab = document.querySelector(`[data-tab="${id}"]`); const content = document.getElementById(`tab-${id}`); if (tab) tab.classList.add('active'); if (content) content.classList.add('active'); } /* ─── AUL EXAMPLE CARDS ──────────────────────────────────────────────── */ function renderAulExampleCards() { const el = document.getElementById('aulExampleCards'); el.innerHTML = AUL_SNIPPETS.map((s, i) => `
⚡ ${escHtml(s.title)} Click to load
${escHtml(s.code.slice(0, 150))}…
` ).join(''); } /* ─── HELPERS ────────────────────────────────────────────────────────── */ function escHtml(s) { if (!s) return ''; return String(s).replace(/&/g,'&').replace(//g,'>').replace(/"/g,'"').replace(/'/g,'''); } function delay(ms) { return new Promise(r => setTimeout(r, ms)); } /* ─── AUTONOMOUS LOOP (simulated background agent activity) ──────────── */ const AGENT_ACTIONS = [ 'Grant Seeker: Found 3 new SBIR opportunities — queuing applications', 'Web Scraper: Collected 47 data points from grant portals', 'AUL Runner: Pipeline "grantAutoApply" executed in 340ms', 'MoltBot Core: Task decomposition complete — 4 sub-tasks assigned', 'GitHub Deployer: Auto-commit ready — 2 new tool definitions', 'Income Optimizer: Revenue model updated — projected +$2,400/mo', 'aiComplete: LLM response cached for fetchGrantData', 'OpenClaw: 12 tool invocations this cycle', 'Oasis: Agent health check — all systems nominal', 'MoltBook: New tool "revenueForecaster" registered by Grant Seeker' ]; function autonomousLoop() { setInterval(() => { const action = AGENT_ACTIONS[Math.floor(Math.random() * AGENT_ACTIONS.length)]; execCount++; addEvent('Agent', action); oasisLog(action, 'info'); updateMetrics(); }, 12000); } /* ─── INIT ───────────────────────────────────────────────────────────── */ function init() { // Render all sections renderToolRegistry(); renderAulSnippets(); renderOasis(); renderOpenClaw(); renderChat(); renderAulExampleCards(); updateMetrics(); // Initial event log addEvent('ATF', 'Agent Tool Factory initialized'); addEvent('OpenClaw', 'Protocol registry loaded — 8 built-in tools'); addEvent('Oasis', '6 agents deployed in sandbox'); addEvent('MoltBot', 'Orchestrator online — awaiting objectives'); addEvent('AUL', 'Universal runtime ready'); // Oasis startup log oasisLog('Agent Tool Factory v1.0 started', 'sys'); oasisLog('AUL Universal Runtime: READY', 'ok'); oasisLog('OpenClaw Protocol: ACTIVE', 'ok'); oasisLog(`Loaded ${BUILTIN_TOOLS.length} built-in tools`, 'ok'); oasisLog(`${BUILTIN_AGENTS.filter(a=>a.status==='on').length} agents active in Oasis`, 'ok'); // Wire tab bar document.querySelectorAll('.tab').forEach(tab => { tab.addEventListener('click', () => switchTab(tab.dataset.tab)); }); // MoltBook controls document.getElementById('btnNewTool').addEventListener('click', () => { switchTab('moltbook'); document.getElementById('toolName').focus(); }); document.getElementById('btnRegisterTool').addEventListener('click', registerTool); document.getElementById('btnTestTool').addEventListener('click', testTool); document.getElementById('btnClearTool').addEventListener('click', () => { ['toolName','toolDesc','toolSchema','toolCode'].forEach(id => { document.getElementById(id).value = ''; }); }); // Oasis controls document.getElementById('btnSpawnAgent').addEventListener('click', spawnAgent); document.getElementById('btnDeployAll').addEventListener('click', deployAllAgents); document.getElementById('btnPauseAll').addEventListener('click', pauseAllAgents); document.getElementById('btnRefreshOasis').addEventListener('click', () => { renderOasis(); updateMetrics(); }); document.getElementById('btnClearOasisLog').addEventListener('click', () => { document.getElementById('oasisConsole').innerHTML = ''; }); // MoltBot document.getElementById('btnMoltbotSend').addEventListener('click', () => { const input = document.getElementById('moltbotInput'); sendToMoltbot(input.value); input.value = ''; }); document.getElementById('moltbotInput').addEventListener('keydown', e => { if (e.key === 'Enter') { sendToMoltbot(e.target.value); e.target.value = ''; } }); document.querySelectorAll('[data-objective]').forEach(btn => { btn.addEventListener('click', () => { sendToMoltbot(btn.dataset.objective); switchTab('moltbot'); }); }); // AUL document.getElementById('btnAulRun').addEventListener('click', runAul); document.getElementById('btnAulValidate').addEventListener('click', validateAul); document.getElementById('btnAulDeploy').addEventListener('click', deployAulAsTool); document.getElementById('btnAulClear').addEventListener('click', () => { document.getElementById('aulCode').value = ''; document.getElementById('aulOutput').textContent = '// Output will appear here'; }); // OpenClaw document.getElementById('btnOcCall').addEventListener('click', callOpenClaw); // Start autonomous loop autonomousLoop(); } window.addEventListener('DOMContentLoaded', init);