Container management system for isolated browser instances with distributed architecture and queue-based task processing
Machineuse exposes 12 tools with severe definition gaps. Most tools lack proper parameter descriptions and input validation. Tool schemas are minimal or missing entirely. Descriptions are present but generic. The server appears to be a container management system, but tool definitions do not follow agentic tool patterns, they read more like internal API endpoints than LLM-friendly tool interfaces. Critical issues: (1) create_instance and list_instances have empty required schemas with no input parameters documented; (2) Tools like register_handler, register_topic_handler, start_reply_server, start_subscriber, start_pull_server expose internal messaging infrastructure (NNG/ZMQ patterns) rather than user-facing abstractions; (3) Descriptions lack clarity on when to use each tool vs alternatives; (4) No error handling guidance; (5) Parameter descriptions are sparse or missing; (6) No pagination, limits, or output schema documentation; (7) Several tools (register_handler, register_topic_handler) accept complex objects ('MessageHandler object') without defining the expected schema.
Authenticate instance key from Bearer token
Create a new container instance with load awareness
Delete a container instance
Get details of a specific instance
Perform a health check of the service
List all container instances
Queue a new browser instance creation via task queue
create_instance and list_instances have empty input schemas (no properties, no required fields) with no documented parameters. LLMs cannot determine what inputs these tools accept or what defaults apply.
queue_instance_creation accepts a complex 'request' parameter typed as 'object' with description 'InstanceCreationRequest object', but the schema for InstanceCreationRequest is not defined. LLMs cannot construct valid input without seeing the schema.
register_handler and register_topic_handler accept 'handler' parameters typed as objects with description 'MessageHandler object', but MessageHandler schema is not visible or defined. These expose internal NNG messaging concerns rather than user-facing abstractions.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | 2026-07-28+ | v2 |
Register a handler for a specific endpoint
Register a handler for a specific topic
Start PULL server for receiving work
Start REP server for handling requests
Start SUB client for receiving events
No tool descriptions explain when to use one tool vs another. For example, create_instance vs queue_instance_creation, both create instances, but the distinction is not documented. LLMs will guess or call both.
No output schemas documented for any tool. LLMs cannot anticipate what fields will be returned (e.g., from get_instance or list_instances) and cannot plan downstream tool calls.
delete_instance is destructive (marked DESTRUCTIVE risk) but has no confirmation pattern or dry-run option. Tool description does not warn about irreversibility. Agents could delete instances without explicit confirmation.
authenticate_instance_key accepts 'credentials' as a raw string described as 'HTTPAuthorizationCredentials - Bearer token'. Exposing credentials as parameters violates secret injection pattern, credentials should be server-side injected, not passed in tool calls.
No error handling guidance. Tool descriptions do not explain what errors are recoverable (e.g., 'instance not found, try list_instances to see available IDs') or what the LLM should do next on failure.
start_reply_server, start_subscriber, start_pull_server expose low-level NNG (nanomsg) messaging concerns. These are internal infrastructure tools, not user-facing abstractions. If agents are meant to control messaging infrastructure, wrap these in higher-level domain tools (e.g., 'start_task_queue' rather than 'start_pull_server').
No pagination or result limits documented. list_instances has no offset/limit/page_size parameters. If the system has hundreds of instances, LLMs will retrieve all of them, blowing the context window.
Parameter descriptions are minimal or missing. E.g., 'instance_id' is described as 'ID of the instance to retrieve', does not explain format (UUID, integer, string prefix), whether partial matches are allowed, or what happens if not found.