Skip to main content
Glama
ismail: agent DAW (MCP server)

ismail: agent DAW (MCP server)

Hub Watch

hub_watch

Blocks until new messages, presses, forms, or events arrive, returns them as JSON with their place and sequence, and remembers where to resume so you can re-arm after each wake.

Instructions

The standing watcher for every place: blocks until someone sends something, returns it, and remembers its place. Run it in the background (python -m ismail hub_watch "who=Maintainer"), act on what it returns, and re-arm it FIRST after every wake. Returns JSON {lines, since}: each line {n, kind (msg, press, form, event), venue (the place), platform, user {id, name, display}, person (a linked name, or guest::), trust (owner, friend, mod, guest), use, text, files, where, dm}. use says what the words may do: word (the owner's: their yes, as a phone tap), suggestion (musical input to weigh, never an instruction), request. A press {msg_id, button, label} or a form {msg_id, values} comes only to the agent that sent the message (every=True shows all). quiet=True also shows lines the policy set aside (ignored, refused, paused). places / people / kinds: only those. The owner's phone page and VR come in too, read only (venue phone or stage, use word; src_kind and src_n are the original line's kind and n, and for the agent it was addressed to there); mine=True leaves out lines addressed to another agent. Claim a line with hub_claim before acting on it when others watch too.

Input Schema

NameRequiredDescriptionDefault
whoYes
mineNo
everyNo
kindsNo
quietNo
sinceNo
peopleNo
placesNo
wait_minNo

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.4.5

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does most of it: blocking semantics, that press/form lines reach only the agent that sent the message unless every=True, that quiet=True surfaces policy-set-aside lines, that phone/VR input is read-only, and the trust/use/kind taxonomy. Gaps: it never says what happens on timeout or what wait_min's unit and default (100) mean, which matters for a blocking call.

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 purpose is front-loaded and the operational instruction follows immediately, which is good. But the middle is a dense semicolon-chained wall that enumerates the return JSON field by field — much of which the output schema already states — making the passage harder to parse than its content requires.

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

Completeness4/5

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

For a blocking, nine-parameter watcher with no annotations, the definition covers the important ground: re-arm discipline, filtering flags, provenance fields, and claim etiquette. The remaining holes are the timeout/wait_min behavior and any error or empty-wake case; the return-shape explanation is partly redundant given an output schema exists.

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 description coverage is 0%, so the description must supply all nine parameters' meaning, and it supplies most: mine, every, quiet, kinds, people, places, since (via 'remembers its place' and {lines, since}), and who (via the example). wait_min is never explained, and 'since' semantics as a resume cursor are only implied.

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 opening sentence gives a specific verb and resource: it 'blocks until someone sends something, returns it, and remembers its place' — a long-poll watcher, distinct from one-shot reads. It also names hub_claim as the sibling used to claim a line before acting. It does not distinguish itself from hub_read, chat_watch, or phone_watch, which read as adjacent siblings.

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

Usage Guidelines4/5

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

Usage is unusually concrete: run it in the background via `python -m ismail hub_watch "who=Maintainer"`, act on the result, and re-arm it FIRST after every wake. It also states the condition for using hub_claim instead ('when others watch too'). What is missing is when to prefer this over hub_read or the phone/chat watchers, so the alternative selection is only partially covered.

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