Skip to main content
Glama
newsbubbles

ismail: agent DAW (MCP server)

Stage Behaviours

stage_behaviours

Inspect and reload scene object behaviours to see each object's actions, state, sound, and errors, letting you fix JavaScript so the room responds on its own.

Instructions

What the things in a scene do on their own: the objects with a behaviour in scenes//behaviours.js, what each can do (press, its menu items, its inputs), its state now, its sound, and every load error and warning (page command: behaviours). reload=True reads the file again first: after writing or changing it, call this with reload and read the errors (each {object, phase, action, error, line}; line is in behaviours.js). The file is plain JavaScript, no imports: export default { object_name: { sound, state, apply(s), press(s), menu: {label: (s) => ...}, inputs: {name: (s, value) => ...} } }. The page runs these itself when the person pinches or triggers the object in VR (or picks a menu item), so the room answers with no agent in the loop: turn anything you did by hand (lights, moves, visibility, music, any page command through s.do) into such a function. s is the object's handle: get, set, state, send (wire to another object's input), light, show, move, sound, emit (a message to agents: object_message), do, after, every, clock, where (an object, 'person' or a body's joint ':': location, rotation, forward), place (a pose at once) and follow (soft-follow a target every frame: a chase or drone camera; stage_follow tries one without code, and its options are the same). A frame(s, dt) in an object's definition runs every frame. apply(s) runs at load and after every state change: put the state-to-room mapping there, so a reload or a scene switch shows the right room. Every interaction needs its own sound (sound: a file under the scene folder, rendered with ismail); without one the page clicks and warns. Every error, at load or at run time, also goes out as behaviour_error {object, phase (load, apply, press, menu, input, after, every, frame, follow), action, error, line}; listen for it. In VR a press that fails buzzes and shows a short note at the object, and an object whose code did not load (broken) does the same instead of opening the edit menu. Page replies {file, objects: [{object, actions, state, sound}], errors, warnings, broken: {object: why}, following: [{object, target, by, waiting?}]}. Emits: behaviours_loaded, behaviour_error, behaviour_warning.

Input Schema

NameRequiredDescriptionDefault
sceneYes
reloadNo

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.4.0

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so thoroughly: it explains the behaviours.js file format, how the page executes functions autonomously, the events emitted (behaviours_loaded, behaviour_error, behaviour_warning), the structure of page replies, error handling details, and VR feedback on failure. This is rich behavioral context beyond what any structured field provides.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is information-dense but lengthy and not front-loaded cleanly; the opening sentence is a long run-on that buries the core action. While every sentence contains relevant detail, the overall structure is a wall of text that could be organized with clearer breaks for faster parsing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity, the description is complete: it covers the file format, runtime behavior, error events, emitted events, reply structure, and VR specifics. Even though an output schema exists, the description adds crucial context about the page's autonomous execution and event emissions, leaving no major gaps for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It does: 'scene' is implicitly defined via 'scenes/<scene>/behaviours.js', and 'reload=True reads the file again first' with clear workflow guidance. Both parameters gain meaning beyond their bare schema types, though the description could be slightly more explicit that 'scene' is a required identifier.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: it inspects objects with behaviours in a scene's behaviours.js, reporting actions, state, sound, and load errors/warnings. The phrase 'What the things in a scene do on their own' is specific and distinguishes it from generic scene listing. However, it does not explicitly contrast with siblings like stage_behaviour_run or stage_behaviour_state, leaving some ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear guidance for the reload parameter: 'after writing or changing it, call this with reload and read the errors.' It also hints at converting manual actions into behaviour functions. But it never states when to use this tool versus alternatives such as stage_behaviour_run or stage_behaviour_state, so usage relative to siblings remains implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools