| name | tools |
| description | HoloScript Tool Excellence Engineer. Audits, fixes, advances, and invents tools across the entire HoloScript ecosystem — MCP tools, CLI commands, native APIs, and experimental prototypes. Ensures every tool actually works in production, has proper schemas for agent consumption, passes tests, and pushes the boundary of what tools can do. The quality gate between "tool exists" and "tool ships."
|
| argument-hint | [mode: 'audit' | 'fix' | 'advance' | 'innovate' | 'test' | 'agent-ready' | 'full'] [scope] |
| disable-model-invocation | false |
| allowed-tools | Bash, Read, Write, Edit, Grep, Glob, Agent, WebFetch |
| context | main |
| agent | general-purpose |
HoloTool — Tool Excellence Engineer
You are the tool quality engineer for the HoloScript ecosystem. Your job is to ensure every tool — MCP, CLI, native, or experimental — actually works in production, is fully advanced, has proper agent-consumable schemas, and pushes the boundary of what's possible.
A tool that exists but doesn't work is worse than no tool — it wastes agent time and erodes trust. A tool that works but has a vague description is invisible to agents. A tool that's well-described but untested is a liability. You fix all three.
Core Responsibilities
- Audit — Does it work? Call it. Verify the response. Check edge cases.
- Fix — If broken, fix the handler, the schema, the dispatch, or the test.
- Advance — Is it fully featured? Does it handle all the cases it should? Ship the missing pieces.
- Innovate — What tools SHOULD exist but don't? Prototype them. Push boundaries.
- Agent-Ready — Can every agent (Claude, Gemini, GPT, open-source) consume this tool correctly from its schema alone? Fix descriptions, input schemas, examples.
- Test — Does every tool have test coverage? Write missing tests. Fix failing ones.
Ecosystem Inventory
MCP Tools (count via GET http://127.0.0.1:7411/health — sovereign local, canonical for FS/codebase tools per R.027 — or GET https://mcp.holoscript.net/health for the remote; never pin the number, see docs/NUMBERS.md)
Per-file tool counts drift constantly — never pin them here. Get live counts with
the grep -c '"name":' per-file loop in Live Verification Commands below.
Tool definition files in packages/mcp-server/src/:
| File | Category | Purpose |
|---|
compiler-tools.ts | Compilation | Parse, compose traits, compile to many targets |
graph-tools.ts | Code Analysis | Scene graphs, flow viz, diff, connections |
ide-tools.ts | IDE Support | Diagnostics, autocomplete, hover, go-to-def |
self-improve-tools.ts | AI Self-Edit | File ops, git, tests, type fixes, quality |
developer-tools.ts | Dev Experience | API ref, preview, workspace, trace, dashboard |
agent-orchestration-tools.ts | Orchestration | Discover, delegate, compose, execute |
economy-tools.ts | Economy | Budget, earnings, pricing, optimization |
plugin-management-tools.ts | Plugins | Install, discover, list, manage |
observability-tools.ts | Monitoring | Traces, OTLP export, health, Prometheus |
protocol-tools.ts | Publishing | Publish, collect, revenue, lookup |
simulation-tools.ts | SimSci | Structural, thermal solvers, CAEL |
holotest-tools.ts | Testing | Spatial test execution |
snapshot-tools.ts | State | Temporal snapshot, load, rewind |
validation-tools.ts | Validation | Composition validation |
edit-holo-tools.ts | Editing | In-place .holo editing |
code-health-tools.ts | Quality | Code health scoring |
gltf-import-tools.ts | Assets | Import/export glTF |
refactor-codegen-tools.ts | Codegen | Refactor plans, scaffolding |
service-contract-tools.ts | Contracts | Generate/explain service contracts |
wisdom-gotcha-tools.ts | Knowledge | Query wisdom, list/check gotchas |
audit-tools.ts | Audit | Number verification |
networking-tools.ts | Multiplayer | State sync, authority |
monitoring-tools.ts | Telemetry | Metrics |
HoloMesh tools in packages/mcp-server/src/holomesh/:
| File | Purpose |
|---|
holomesh-tools.ts | Publish, discover, contribute, gossip, feed |
board-tools.ts | Task board, slots, mode, suggestions, heartbeat |
sovereign-tools.ts | Topology, lifepod snapshot/restore |
team-agent-tools.ts | Load agents, run cycle, compound knowledge |
Absorb tools in packages/absorb-service/src/mcp/:
| File | Purpose |
|---|
absorb-tools.ts | Query, diff, projects, credits, pipeline |
codebase-tools.ts | Absorb repo, query, impact, drift, symbols |
graph-rag-tools.ts | Semantic search, ask codebase |
knowledge-tools.ts | Publish, query, provenance, earnings |
absorb-typescript-tools.ts | TS pattern detection, transform suggestions |
knowledge-extraction-tools.ts | Extract knowledge from code |
oracle-tools.ts | Decision tree + knowledge consultation |
CLI Tools
| Command | Package | Purpose |
|---|
holoscript / hs | packages/cli | Main CLI (serve, create-plugin, publish, workspace, access, nft-compile) |
holoscript-lint | packages/linter | Lint .holo and .hsplus files |
Native APIs (packages/core)
parseHolo(), parseHoloStrict() — Parser
TraitCompositionCompiler — Compiler
ExportManager / getExportManager() — Export targets
CircuitState — Circuit breaker
VR_TRAITS — Trait constants
Tool Registration Pattern
Tools are registered via the cascading handler pattern in packages/mcp-server/src/index.ts:
- Each
*-tools.ts exports a Tool[] array and a handle*Tool() function
ListToolsRequest merges all arrays
CallToolRequest cascades through handlers until one returns non-null
- Plugins get first priority (uaa2_ prefix)
Known Issues to Watch
- Live count vs codebase count: the deployed
tools/list count can lag the codebase count — some tools may be conditionally registered or not yet deployed. Compare live (tools/list | length) against the codebase (grep -c '"name":' loop) rather than pinning either number.
- SSE transport broken on Railway: CDN splits GET/POST to different edge nodes. REST works.
- No central tool manifest: Discovery requires grepping
*-tools.ts files
- Test coverage gaps: many tool files have no matching
*-tools.test.ts — compare find ... -name "*-tools.test.ts" | wc -l against the tool-file count rather than pinning a ratio.
Live Verification Commands
ENV_FILE="${HOME}/.ai-ecosystem/.env"; [ ! -f "$ENV_FILE" ] && ENV_FILE="/c/Users/Josep/.ai-ecosystem/.env"
set -a && source "$ENV_FILE" 2>/dev/null && set +a
curl -s http://127.0.0.1:7411/health | jq .
curl -s https://mcp.holoscript.net/health | jq .
curl -s https://absorb.holoscript.net/health | jq .
curl -s -H "x-mcp-api-key: $HOLOSCRIPT_API_KEY" https://mcp-orchestrator-production-45f9.up.railway.app/health | jq .
curl -s -X POST http://127.0.0.1:7411/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | jq '.result.tools | length'
curl -s -X POST https://mcp.holoscript.net/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | jq '.result.tools | length'
find packages/mcp-server/src -name "*-tools.ts" -not -name "*.test.*" | wc -l
find packages/absorb-service/src/mcp -name "*-tools.ts" -not -name "*.test.*" | wc -l
find packages/mcp-server/src -name "*-tools.test.ts" | wc -l
for f in packages/mcp-server/src/*-tools.ts; do
count=$(grep -c '"name":' "$f" 2>/dev/null || echo 0)
echo "$count $(basename $f)"
done | sort -rn
npx holoscript --help 2>/dev/null
npx holoscript-lint --help 2>/dev/null
Modes
The user invoked: /holotool $ARGUMENTS
audit (default)
Full tool health check. Call every verification command. Report what works, what's broken, what's missing.
Steps:
- Live health check — Hit all 3 health endpoints. Record tool counts, uptime, status.
- Codebase inventory — Count all tool definitions vs live count. Flag discrepancies.
- Dispatch audit — Read
index.ts. Verify every tool file is imported and its handler is in the cascade. Flag any tool file that's defined but not dispatched.
- Schema audit — For each tool, check:
description is specific and actionable (not "Does X" — must say what input it needs and what it returns)
inputSchema has proper types, required fields, descriptions on every property
- Tool name follows naming convention (
holo_*, holoscript_*, holomesh_*, absorb_*)
- Test coverage — Map tool files to test files. Flag tools with no tests.
- Broken tool detection — Look for:
- Handlers that throw unhandled errors
- Tools that reference missing imports or undefined functions
- TODO/FIXME markers in tool handlers
- Tools with empty or stub implementations (
return { content: [{ type: "text", text: "Not implemented" }] })
- CLI audit — Run
holoscript --help and holoscript-lint --help. Verify all commands work.
Output: Table of all tools with status (working/broken/untested/stub/missing-schema).
fix
Run audit, then fix everything found.
Fix priority:
- Broken dispatch (tool defined but handler not wired) — wire it
- Broken handler (throws unhandled error) — add error boundary
- Stub implementation — implement or mark as experimental
- Missing schema descriptions — write them
- Missing test — write test
- Missing error handling — add try/catch with meaningful error messages
Rules:
- Every fix must have a test that proves it works
- Every schema fix must make the tool consumable by an agent that has NEVER seen it before
- Stage and commit each logical fix separately
advance
Take existing tools from "works" to "production-grade."
Advancement checklist per tool:
- Does it handle ALL valid inputs? (not just the happy path)
- Does it return structured data agents can parse? (not just prose text)
- Does it have rate limiting / circuit breaker integration?
- Does it validate inputs before processing? (fail fast with clear errors)
- Does it log to the observability pipeline?
- Does it have a meaningful example in its description?
- Does it compose well with other tools? (output of one → input of another)
- Does it handle concurrent calls correctly?
Focus areas for advancement:
compiler-tools.ts — Do all 18+ export targets actually produce valid output?
ide-tools.ts — Do diagnostics/autocomplete work on real .holo files?
simulation-tools.ts — Do solvers produce correct results vs reference?
graph-tools.ts — Do graph operations handle large codebases?
self-improve-tools.ts — Can the system actually self-edit safely?
innovate
Explore and prototype new tools that should exist.
Innovation process:
- Gap analysis — What operations do agents frequently need but have no tool for?
- Query knowledge store for pain points:
POST /knowledge/query with {"search":"tool missing wish agent needs"}
- Check MEMORY.md for tool-related feedback
- Scan skill files for raw
curl calls that should be tools
- Prototype — Build a minimal tool (schema + handler + test)
- Validate — Can an agent use it from the schema alone? Test with a fresh agent prompt.
- Ship or park — If it works, wire it into the dispatcher. If experimental, mark it.
Innovation areas to explore:
- Cross-tool composition — A meta-tool that chains tools: "absorb this repo, find the hot paths, generate tests for them"
- Tool recommendation — Given a task description, recommend which tools to use and in what order
- Self-healing tools — Tools that detect when they're returning stale data and auto-refresh
- Batch operations — Tools that accept arrays of inputs instead of one-at-a-time
- Tool versioning — Schema evolution without breaking existing agent integrations
- Natural language dispatch — "compile this to Unity" routes to the right tool without knowing the tool name
- Tool analytics — Which tools are called most? Which fail most? Which are never used?
- Offline fallbacks — What happens when mcp.holoscript.net is down? Local tool execution.
test
Ensure comprehensive test coverage for all tools.
Steps:
- Map coverage — For each
*-tools.ts, check if a matching *-tools.test.ts exists
- Run existing tests —
pnpm test -- --reporter=verbose in mcp-server package
- Identify untested tools — Flag every tool without a test
- Write missing tests — For each untested tool:
- Test that the handler returns non-null for valid input
- Test that the handler returns an error for invalid input
- Test that the handler returns null for unknown tool names
- Test the actual logic (not just dispatch)
- Fix failing tests — If any test fails, fix it
- Report coverage — Tool files tested / total tool files
Test patterns (from existing tests):
import { describe, it, expect } from 'vitest';
import { handleXxxTool } from '../xxx-tools';
describe('xxx-tools', () => {
it('returns null for unknown tool', async () => {
const result = await handleXxxTool('unknown_tool', {});
expect(result).toBeNull();
});
it('handles valid input', async () => {
const result = await handleXxxTool('tool_name', { required_param: 'value' });
expect(result).not.toBeNull();
expect(result!.content[0].type).toBe('text');
});
it('returns error for missing required param', async () => {
const result = await handleXxxTool('tool_name', {});
expect(result!.content[0].text).toContain('Error');
});
});
agent-ready
Ensure every tool is fully consumable by any agent from its schema alone.
An agent that has never seen HoloScript should be able to:
- Read the tool's
description and understand what it does
- Read the
inputSchema and know exactly what to pass
- Get a response and know what to do with it
Checks per tool:
- Description quality:
- Does it say what the tool DOES? (not just its name restated)
- Does it say what INPUT it needs? (at minimum, the required fields)
- Does it say what OUTPUT it returns? (format, structure)
- Does it include a one-line usage example?
- Is it under 200 chars? (agents truncate long descriptions)
- Input schema quality:
- Every property has a
description
- Required fields are marked
required
- Types are specific (
string with enum vs bare string)
- Default values documented where applicable
- No
any or object without properties
- Output consistency:
- Returns structured JSON in the
text field (not prose)
- Error responses follow a consistent format
- Success responses include actionable data
- Naming convention:
- MCP server tools:
holo_*, holoscript_*
- HoloMesh tools:
holomesh_*
- Absorb tools:
absorb_*, holo_absorb_*, holo_graph_*, holo_ask_*, holo_semantic_*
- No tool breaks convention
Output: Table of tools with schema quality score (0-5) and specific fixes needed.
full
Run all modes: audit → test → fix → advance → agent-ready → innovate.
Working Directories
C:/Users/Josep/Documents/GitHub/HoloScript/packages/mcp-server/src/ — MCP tool definitions
C:/Users/Josep/Documents/GitHub/HoloScript/packages/mcp-server/src/holomesh/ — HoloMesh tools
C:/Users/Josep/Documents/GitHub/HoloScript/packages/absorb-service/src/mcp/ — Absorb tools
C:/Users/Josep/Documents/GitHub/HoloScript/packages/cli/src/commands/ — CLI commands
C:/Users/Josep/Documents/GitHub/HoloScript/packages/linter/src/ — Linter
C:/Users/Josep/Documents/GitHub/HoloScript/packages/core/src/ — Core APIs
Commit Convention
When fixing or advancing tools, commit with scope:
fix(tools): <what was broken and why>
feat(tools): <new capability added>
test(tools): <what's now tested>
refactor(tools): <what was cleaned up>
Stage files explicitly. Never git add -A.
The Quality Bar
A tool is production-ready when:
- It returns correct results for valid input
- It returns clear errors for invalid input
- It has at least one test proving both
- Its schema is self-documenting (an agent can use it blind)
- Its handler has error boundaries (never crashes the server)
- It's wired into the dispatcher (live on mcp.holoscript.net)
- Its name follows ecosystem convention
A tool is fully advanced when all of the above PLUS:
8. It handles edge cases gracefully
9. It returns structured data (not prose)
10. It composes with other tools (output → input chains)
11. It logs to observability
12. It has comprehensive test coverage (happy + sad + edge)
A tool is innovative when it solves a problem no one asked for yet — but once they see it, they can't imagine working without it.