Skip to main content
Glama

Pass unfinished work forward

arroway_pass

Call when you STOP with the task unfinished: it leaves a HANDOFF served at the top of every read until someone closes it; a completed task ends in arroway_log instead. ALWAYS write the authored essence (only a frozen catalog without that field may omit it).

Input Schema

NameRequiredDescriptionDefault
cardNoCard, issue or PR, when one exists.
essenceNoOne authored line with the operative in-flight state.
projectYesProject slug.
next_stepYesThe single concrete next step. Not a plan: the step.
open_riskNoThe risk left open.
supersedesNo#handle of the OPEN handoff this one replaces, from a read.
do_not_redoNoWhat must NOT be redone or re-litigated.
addressed_toNoOptional person or routine it is meant for; never a lock.
read_handlesNoThe reading list: #handles the next session must read in full, in order.
where_stoppedYesWhat is done and verified, what is half-done.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • removedInput schema / additionalProperties
      Removed value: -false
    • changedInput schema / properties / read_handles / description
      Previous value: -"The reading list: #handles of THIS project the next session must read in full, in order. Only what is required."New value: +"The reading list: #handles the next session must read in full, in order."
  2. Changed28 schema fields changed
    • changedInput schema / properties / addressed_to / description
      Previous value: -"Optional name of a person or routine this is meant for. A visible convention, never a lock: everyone still sees it, and the read says who may take it."New value: +"Optional person or routine it is meant for; never a lock."
    • removedInput schema / properties / addressed_to / maxLength
      Removed value: -4096
    • removedInput schema / properties / addressed_to / minLength
      Removed value: -1
    • changedInput schema / properties / card / description
      Previous value: -"Pointer to the living tracker for this work (card id, issue, PR), when one exists."New value: +"Card, issue or PR, when one exists."
    • removedInput schema / properties / card / maxLength
      Removed value: -4096
    • removedInput schema / properties / card / minLength
      Removed value: -1
    • changedInput schema / properties / do_not_redo / description
      Previous value: -"What is already done, verified or decided that the next session must NOT redo or re-litigate."New value: +"What must NOT be redone or re-litigated."
    • removedInput schema / properties / do_not_redo / maxLength
      Removed value: -4096
    • removedInput schema / properties / do_not_redo / minLength
      Removed value: -1
    • changedInput schema / properties / essence / description
      Previous value: -"One authored line that states the operative in-flight state. This is the default read; the full handoff remains recoverable by handle."New value: +"One authored line with the operative in-flight state."
    • removedInput schema / properties / essence / minLength
      Removed value: -1
    • removedInput schema / properties / next_step / maxLength
      Removed value: -4096
    • removedInput schema / properties / next_step / minLength
      Removed value: -1
    • changedInput schema / properties / open_risk / description
      Previous value: -"The risk left open — what could bite whoever continues."New value: +"The risk left open."
    • removedInput schema / properties / open_risk / maxLength
      Removed value: -4096
    • removedInput schema / properties / open_risk / minLength
      Removed value: -1
    • addedInput schema / properties / project / description
      Added value: +"Project slug."
    • removedInput schema / properties / project / minLength
      Removed value: -1
    • removedInput schema / properties / project / pattern
      Removed value: -"^[a-z0-9]+(?:-[a-z0-9]+)*$"
    • changedInput schema / properties / read_handles / description
      Previous value: -"The reading list the next session needs: #handles of the memories, log entries and handoffs — of THIS project — that whoever continues must read in full. You know what you had to read to get here; naming it spares them rediscovering it. Order is kept as you write it. At most 10 unique references, and going over is refused rather than trimmed, because each one comes back in full body. Only what is genuinely required to continue: a handle merely cited in do_not_redo is history, not required reading, and is not picked up from the text — it counts only if you name it here."New value: +"The reading list: #handles of THIS project the next session must read in full, in order. Only what is required."
    • removedInput schema / properties / read_handles / items / pattern
      Removed value: -"^#?(?:[0-9a-fA-F]{8,32}|[0-9a-fA-F]{8}-[0-9a-fA-F-]{27})$"
    • changedInput schema / properties / supersedes / description
      Previous value: -"#handle of the OPEN handoff this one replaces, from a read. Replacement is explicit by reference, never guessed from titles."New value: +"#handle of the OPEN handoff this one replaces, from a read."
    • removedInput schema / properties / supersedes / maxLength
      Removed value: -4096
    • removedInput schema / properties / supersedes / minLength
      Removed value: -1
    • changedInput schema / properties / where_stopped / description
      Previous value: -"Where the work stands right now — what is done and verified, what is half-done."New value: +"What is done and verified, what is half-done."
    • removedInput schema / properties / where_stopped / maxLength
      Removed value: -4096
    • removedInput schema / properties / where_stopped / minLength
      Removed value: -1
    • removedInput schema / x-maxSerializedLength
      Removed value: -131072
  3. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Annotations only say this is a non-read-only, non-destructive, closed-world write; the description adds the genuinely useful behavioral fact that the handoff persists at the top of every read until closed, which no annotation conveys. It also adds a hard authoring rule about essence that is not derivable from structured fields. It stops short of naming what is returned (the #handle needed for superseding or closing) or what permissions/state are required to close it.

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

Conciseness4/5

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

Two sentences, front-loaded with the call trigger, with no filler. The parenthetical about a 'frozen catalog without that field' is unexplained jargon that costs the reader a beat, which keeps it below a 5.

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 10-parameter mutation tool with no output schema, the description covers the essential decision (use this vs. arroway_log) and the persistence behavior of what it creates. It leaves two gaps an agent would care about: what the call returns (presumably a handle) and how the handoff is subsequently closed, plus the meaning of the 'frozen catalog' carve-out.

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 100%, so the baseline is 3; the description earns above that by adding meaning the schema does not carry, notably that essence is authoring-mandatory even though it is absent from the required list, with a narrow exemption for a frozen catalog. It does not clarify how supersedes, read_handles, or addressed_to interact in practice, so it is not exhaustive.

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

Purpose5/5

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

The description states a concrete effect: calling it 'leaves a HANDOFF served at the top of every read until someone closes it,' which tells an agent exactly what artifact is created and how it behaves. It also explicitly separates this tool from the sibling that handles the opposite case ('a completed task ends in arroway_log instead'), so the agent can choose between the two without opening either schema.

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

Usage Guidelines5/5

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

The trigger condition is stated precisely: 'Call when you STOP with the task unfinished.' The exclusion and alternative are also given in the same sentence, routing completed work to arroway_log. It also states the lifecycle exit condition (until someone closes it), which is the implicit alternative to using this tool at all.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources