Skip to main content
Glama

Server Details

Arroway keeps people and their AIs on the same page. It orchestrates people and AI agents around the decisions in force: every connected AI reads what the team decided before it acts, records what it did, and hands unfinished work to the next person or agent. What an AI proposes waits for a person's approval.

Ownership verified
Status
Healthy
Uptime
99.6% over 42 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
–
Claude
–

TDQS

A3.9/5.0

Scored across 18 tools

Disambiguation4/5

Most tools map to distinct lifecycle steps such as read, remember, retire, pass, claim, and close, and the descriptions give explicit usage triggers. However, the set has several retrieval/context tools (catch_up, read, norms, search_log) and several memory-writing tools (remember, log, pass, verify) whose boundaries are nuanced and require careful reading.

Naming Consistency5/5

All 18 tools use the arroway_ prefix and lower_snake_case, with action-oriented names. Minor exceptions like norms and pass are still readable and do not break the overall naming pattern.

Tool Count4/5

At 18 tools, the surface is slightly above the ideal 3-15 range and includes many fine-grained lifecycle operations. Still, the complexity is justified by the memory, handoff, project, and import/export domain, and there is little obvious filler.

Completeness4/5

The surface covers project creation/update/invite, context reads, memory create/verify/retire/withdraw/move, handoff pass/claim/close, logging/search, and import/export. Minor gaps remain around deleting projects, removing members, or editing log entries, but the core workflows have no dead ends.

Available Tools

18 tools
arroway_catch_upCatch up on what happened, across the person's projectsA
Read-only
Inspect

Call ONCE at the START of a session, before there is a task: recent work across this person's projects, opening with the roster and open handoffs.

NameRequiredDescriptionDefault
daysNoDays back, counting today. Default 2; more only when picking up work after being away.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered. The description adds genuinely new behavioral context: single-call semantics and the ordering of the returned content (roster and open handoffs first). It does not discuss volume, pagination, or failure modes, so not a 5.

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

Conciseness5/5

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

One sentence, front-loaded with the invocation rule and followed by the expected content. No filler or restatement of the title.

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?

With no output schema, the description carries the burden of hinting at return values, and it does so by naming the roster and open handoffs. For a single optional-parameter read tool this is nearly complete; only the shape/scale of the response is left implicit.

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

Parameters3/5

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

Schema coverage is 100% and the schema's own description already explains the default of 2 and when to increase it. The tool description adds no parameter meaning beyond that, so the baseline 3 applies.

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 names a specific retrieval action ('recent work across this person's projects') and even previews the payload ('roster and open handoffs'), which separates it from siblings like arroway_search_log or arroway_read. It stops short of explicitly naming the sibling it replaces, so it is clear but not maximally differentiated.

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?

Timing guidance is unusually explicit: 'Call ONCE at the START of a session, before there is a task.' That tells the agent both when to invoke and that repeated calls are wrong. It does not name an alternative tool or state when not to use it, which keeps it below a 5.

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

arroway_claimTake an open handoffAInspect

Mark that you are taking an open handoff BEFORE working on it. A claim is a mark, never a lock. Addressing rule: addressed to YOUR user — take it; to someone else — only a human in this conversation can decide to take it, and an autonomous session must leave it.

NameRequiredDescriptionDefault
noteNoWho is taking it — a routine names itself here.
handoffYesThe #handle from the read, or the full id.
projectYesProject slug.

TDQS

A4.3/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=false, destructiveHint=false and openWorldHint=false; the description adds the substantive behavior that a claim is a non-exclusive mark rather than a lock, so it does not block other claimants. It also discloses the governance rule governing autonomous sessions versus human decisions, which no structured field conveys. The remaining gap is small (no statement on releasing or expiring a claim, which arroway_withdraw presumably handles).

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 tightly packed sentences with the primary instruction front-loaded and the addressing rule following as a qualifier. Nothing is redundant, though the second sentence crams two conditional branches and an autonomy policy into one line, which costs a little readability.

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 three-parameter, non-destructive write with no output schema, the description covers intent, timing, and authorization boundaries well. It does not say what a successful claim yields or how a claim is later released or superseded, which an agent coordinating with arroway_withdraw or arroway_continue would benefit from knowing.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already explains all three fields, including that 'note' is who is taking it and 'handoff' accepts a #handle or full id. The description adds no format, default, or constraint information beyond that. Baseline 3 is appropriate when the schema carries the parameter burden.

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?

States a specific verb and resource: mark that you are taking an open handoff. It also clarifies the conceptual model ('a claim is a mark, never a lock'), which sharpens what the operation actually is. It does not name a sibling tool to contrast with (e.g. arroway_continue or arroway_withdraw), so an agent must infer the boundary from the shared 'arroway_' family.

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?

Gives explicit timing ('BEFORE working on it') and an explicit decision rule with both branches: if the handoff is addressed to your user, take it; if addressed to someone else, only a human in this conversation can decide, and an autonomous session must leave it. This is a genuine when-to-use / when-not-to-use split with an autonomy constraint, not just implied context.

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

arroway_closeClose a handoff — the work landedAInspect

Close an open handoff when its work is DONE, alongside the arroway_log entry that records the residue. Work that removes what an open handoff exists to fix closes that handoff in the same pass — even when the handoff is someone else's. So this is also the call for someone ELSE's handoff, with a note naming what emptied it. A handoff that still carries real work, which a passer-by must never close, stays open; discarding a handoff is the human's gesture, in the panel.

NameRequiredDescriptionDefault
noteNoOne line on what landed; it points at the residue.
handoffYesThe #handle from the read, or the full id.
projectYesProject slug.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=false; the description is consistent with that and adds real context: closure is logged with residue in arroway_log, the note should name what emptied the handoff, and destructive disposal is reserved for a human in the panel. It does not say whether a closed handoff can be reopened or what the response contains, but the safety profile is well covered.

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 core action is front-loaded in the first clause, and no sentence is pure filler. However, the prose is stylized and oblique ("the residue," "what an open handoff exists to fix"), and the third sentence packs three separate rules into one run-on, adding parsing cost for an agent.

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 three-parameter mutation with annotations and no output schema, the description covers who may close, when, and the required companion logging call. Minor gaps remain: it implies the note is expected even though the schema marks it optional, and it does not state what happens on success or when a handoff is already closed.

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

Parameters3/5

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

Schema coverage is 100%, so project, handoff, and note are already documented in the schema. The description adds only marginal meaning, mainly that the note should "name what emptied it" when closing someone else's handoff; the handoff handle and project slug get nothing beyond the schema. Baseline 3 applies when the schema does the heavy lifting.

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?

States a specific verb and resource: "Close an open handoff when its work is DONE." It also distinguishes closing from discarding ("discarding a handoff is the human's gesture, in the panel"), which is a useful boundary. It does not name sibling tools such as arroway_retire or arroway_withdraw, so the differentiation is conceptual rather than explicit.

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?

Gives explicit conditions: close when the work is done and "alongside the arroway_log entry," including someone else's handoff when your work emptied it. It also gives a clear exclusion — a handoff still carrying real work "must never" be closed by a passer-by. The missing piece is routing against the other lifecycle siblings (retire, withdraw, pass) that an agent would need to choose between.

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

arroway_complete_readConfirm that an Arroway read is completeA
Read-only
Inspect

Acknowledge the final part of a multi-part Arroway read with its read_id and receipt, closing the sequence. It is not a precondition for working.

NameRequiredDescriptionDefault
read_idYesOpaque id returned by the incomplete arroway_read response.
receiptYesOpaque receipt returned by the final part.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnly=true, destructive=false and closed-world, and the description adds the meaningful behavioral note that this is optional and non-blocking. It does not say whether repeated calls are idempotent, whether receipts expire, or what happens if the receipt is stale — gaps that matter for an acknowledgment-style call.

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

Conciseness5/5

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

Two short sentences, front-loaded with the action and payload, followed by the optionality caveat. Nothing is padded and no clause is wasted.

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 two-parameter, closed-world, no-output-schema acknowledgment call, the description covers the essentials: what it does, what it consumes, and that skipping it is safe. Remaining ambiguity (idempotency, stale receipts) is minor at this complexity level.

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

Parameters3/5

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

Schema description coverage is 100%, with both opaque parameters already documented as coming from the read response and the final part. The description only restates their presence ('with its read_id and receipt') and adds no format, lifetime, or sourcing detail beyond the schema, so baseline 3 applies.

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?

States a specific action (acknowledge the final part of a multi-part Arroway read, supplying read_id and receipt) and that it closes the sequence. It is distinguishable from sibling arroway_read by being the terminal acknowledgment step, though it never names arroway_read as its predecessor explicitly.

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?

Usage is implied rather than stated: an agent infers it should call this after the final part of a multi-part read returns a receipt. The one explicit guideline is an exclusion ('It is not a precondition for working'), which usefully says when not to bother, but there is no 'use when the read response is incomplete' instruction or mention of what to do with siblings like arroway_continue.

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

arroway_continueReceive the next part of an Arroway readA
Read-only
Inspect

Fetch the next part of a read that did not fit (read_id and receipt of the preceding part). Returns the next slice with a new receipt; the part marked complete is the last. OPTIONAL: the first part already counts as delivered.

NameRequiredDescriptionDefault
read_idYesOpaque id returned by the incomplete arroway_read response.
receiptYesOpaque receipt returned by the immediately preceding part.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already establish readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds genuine behavioral detail: each call returns a new receipt that must be chained into the next call, and completion is signaled by a marker. However, the 'OPTIONAL: the first part already counts as delivered' sentence is ambiguous and leaves the agent unsure whether an extra call is required.

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 tight sentences with the core purpose and chaining rule front-loaded and no filler. The final 'OPTIONAL' clause is cryptic rather than clarifying and slightly undercuts the otherwise clean structure.

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?

With no output schema, the description carries the return-value burden and does so: it says the response is the next slice plus a new receipt, and that the complete-marked part is terminal. What is missing is only a clear statement of the trigger tool and whether calling continue after the first part is ever necessary.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters are opaque ids whose origins are already documented in the schema ('returned by the incomplete arroway_read response', 'returned by the immediately preceding part'). The description restates the same chaining rule without adding format, expiry, or validity details beyond the schema, so the baseline 3 applies.

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 names a specific verb and resource ('Fetch the next part of a read that did not fit') and ties it to the continuation case, which distinguishes it implicitly from arroway_read, the tool that produces the initial (possibly incomplete) read. It never names arroway_read explicitly, so the sibling boundary must be inferred from 'a read that did not fit'.

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?

It states the precondition for use (a preceding read that did not fit, with its read_id and receipt) and gives the stopping condition ('the part marked complete is the last'). It gives no explicit when-not or naming of the producing tool, and the trailing 'OPTIONAL: the first part already counts as delivered' is unclear about whether a follow-up call is needed after part one.

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

arroway_exportExport this project's norms as a memory packA
Read-only
Inspect

Export what a project has DECIDED, as a pack for another project. Only sanctioned, live memories travel: a FINDING never was one, so findings stay and the answer tells you how many did.

NameRequiredDescriptionDefault
nameYesWhat this pack IS, in a few words: the first thing the other side reads.
topicNoOptional: export only the memories carrying this topic.
projectYesSlug of the project whose norms you are exporting
descriptionNoOptional: who it is for, what it assumes.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare the read-only, non-destructive profile, so the description doesn't need to repeat it. It does add real behavioral content beyond them: only sanctioned, live memories are included, FINDINGS are excluded by rule, and the response reports how many findings stayed behind — useful for predicting the result of the call.

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 purpose, no filler. The second sentence is slightly riddling ('a FINDING never was one, so findings stay and the answer tells you how many did') but it still carries the exclusion rule and the return hint compactly.

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

Completeness3/5

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

Read-only annotations plus full schema coverage carry most of the burden, and the description hints the response reports excluded findings. What remains unclear is the shape of the pack itself — whether it is returned inline or materialized, and what fields it contains — which matters for an export tool with no output schema.

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

Parameters3/5

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

Schema description coverage is 100%, so each of the four parameters is already documented (name, topic filter, project slug, description). The description adds conceptual context about what is exported but does not clarify how 'topic' narrows the set or what the pack-level 'name'/'description' fields control, so baseline 3 applies.

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?

States a specific verb and resource ('Export what a project has DECIDED, as a pack for another project') and narrows scope to decided/sanctioned memories rather than all content. It never names the obvious sibling arroway_import as its counterpart, so the differentiation is implied rather than explicit.

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?

'As a pack for another project' implies the transfer-between-projects scenario, which gives the agent a usable trigger. There is no explicit when-not guidance, no mention of arroway_import as the reverse operation, and no stated prerequisites (e.g. project must exist, must have sanctioned memories).

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

arroway_importImport a memory pack as proposalsAInspect

Bring a memory pack made by arroway_export INTO a project. Everything lands as a PROPOSAL for the person's review and nothing is pinned, whatever the pack says. If any part is malformed, nothing is imported.

NameRequiredDescriptionDefault
packYesThe pack document itself; this server does not fetch URLs.
projectYesProject slug. Not from the person or a read this session? It is a guess: check the arroway_catch_up roster.

TDQS

A4.2/5.0
Behavior4/5

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

Goes well past the annotations by disclosing two real behavioral traits: every imported item is downgraded to a proposal regardless of what the pack asserts, and the import is atomic — any malformed part aborts the whole thing. It stops short of noting permission requirements, pack size limits, or how proposals are surfaced afterward.

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

Conciseness5/5

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

Three short sentences, front-loaded with the action, then the proposal guarantee, then the failure mode. No filler and the emphasis caps land on the two facts an agent must not get wrong.

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 two-parameter tool with a nested pack object and no output schema, the description covers origin, side effects, and failure semantics adequately. It could say what an agent gets back (created proposal count or identifiers) so it can confirm the import, but nothing essential is missing.

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

Parameters3/5

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

Schema description coverage is 100% and the schema already explains that `pack` is the document itself (no URL fetching) and that `project` should be checked against the `arroway_catch_up` roster if guessed. The description adds nothing param-specific, so the baseline 3 applies.

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?

States a specific verb and resource (import a memory pack into a project) and names its sibling `arroway_export` as the producing counterpart, so the round-trip pairing is unambiguous. The caps on INTO and PROPOSAL frame the scope immediately.

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?

The link to `arroway_export` tells the agent where packs come from, and the proposal framing tells it this is the ingestion path rather than `arroway_remember`. It never states when NOT to use it, e.g. that single memories should go through `arroway_remember` or that existing pinned items are untouched by this route.

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

arroway_logLog what a task left behindAInspect

Record the durable residue of a COMPLETED task: what someone arriving later needs in order not to redo it. ALWAYS write the authored essence (only a frozen catalog without that field may omit it). If a read memory's 'dies when' came true, name it in fulfills.

NameRequiredDescriptionDefault
topicNoOptional free tag (e.g. 'marketing')
sourceNoOptional pointer to a living source (URL, doc, CRM id)
contentYesWhat was decided, found or changed, and what it cost. You judge the length.
essenceNoOne authored line with the operative result; never the opening of the body.
projectYesProject slug. Not from the person or a read this session? It is a guess: check the arroway_catch_up roster.
fulfillsNoMemories whose 'dies when' this work made true. Never one that merely looks old.
backfilledNotrue for history from BEFORE Arroway existed, not today's work.
keep_wholeNotrue only after you considered cutting an indivisible oversized residue.
operationalNotrue for HOW the work went: kept for catch-up, out of task reads.

TDQS

A3.9/5.0
Behavior3/5

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

The annotations already establish a non-read-only, non-destructive, closed-world operation. The description adds durability and lifecycle-linkage context, but it does not explain the side effects of listing a memory in fulfills, whether log entries can be revised, or what the call returns.

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

Conciseness5/5

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

Three compact sentences front-load the purpose and then cover the two special recording rules. There is no filler or repeated background material, and each sentence has a distinct operational function.

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?

Together with the richly documented schema, the description supplies enough purpose, scope, and special parameter guidance for correct invocation. The absence of an output schema makes the missing return-behavior information more noticeable, and sibling differentiation and the consequences of fulfills remain underexplained.

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 100%, but the description still adds meaningful cross-field semantics: essence is effectively mandatory despite not being schema-required, with a narrow frozen-catalog exception. It also reinforces the condition for populating fulfills, although that condition largely repeats the schema.

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?

“Record the durable residue of a COMPLETED task” gives a specific verb, resource, and scope, and the following clause clarifies that the record should prevent later duplication of work. It does not explicitly distinguish this tool from siblings such as arroway_remember or arroway_close.

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?

The description clearly says to use it for a completed task and gives conditional guidance for essence and fulfills. It lacks explicit routing guidance for when another sibling should be used instead, or whether logging is required as part of a particular task-completion workflow.

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

arroway_moveMove a memory or log entry to another projectAInspect

Move something to the project it belongs in. A memory is only PROPOSED: the change waits for the person's review, because moving changes who sees it. A log entry you wrote moves at once, text unchanged.

NameRequiredDescriptionDefault
whyYesWhy it belongs there and not here. For a memory, the person decides on this sentence.
memoryYes#handle of the memory or log entry, from a read or arroway_search_log
targetYesSlug of the project you believe it belongs to
projectYesSlug of the project it is in TODAY

TDQS

A4/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 tool; the description adds the crucial fact that memory moves are pending proposals requiring the person's review while log-entry moves are immediate and leave text unchanged. It also supplies the rationale ("moving changes who sees it"). What remains undisclosed is the effect on the source project and what the call returns for each mode.

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

Conciseness5/5

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

Three short sentences, zero filler, with the most consequential fact (proposal vs. immediate) front-loaded right after the purpose statement.

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 four-parameter mutation tool with full schema coverage and no output schema, the description covers the essential behavioral divergence between modes. It stops short of describing the outcome of each call, which an agent might want to know when confirming a move succeeded or is pending.

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

Parameters3/5

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

Schema description coverage is 100% and all four parameters carry their own descriptions, including the meaning of why for memory moves. The description adds no parameter-level detail beyond the schema, so the baseline of 3 applies.

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 names a specific verb and resource ("Move something to the project it belongs in") and then immediately resolves the vague "something" into the two resources it covers: a memory or a log entry. The two-mode split makes it unambiguous what gets moved, though the opening line alone is less precise than the two that follow.

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?

It clearly separates the two cases an agent must choose between: memory moves are proposed and wait for human review, log entries move immediately. It does not name alternatives such as creating a new entry with arroway_remember or when a move should be avoided, so there is no exclusion guidance.

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

arroway_normsWhat the team already decided, and a map of what else it knowsA
Read-only
Inspect

Call in the seconds BEFORE you tell the person something or propose a course of action: returns what is already decided AND THEN A MAP of the titles and handles. arroway_read include GUARANTEES a mapped one in full; it does not make that read any cheaper, so use it to be sure, never to pay less. Before publishing text for others, pass it as draft.

NameRequiredDescriptionDefault
draftNoText you will publish, ending with one line in the project's language on what it claims, recommends and names.
sinceNoCheckpoint from a previous arroway_norms call for THIS project, so standing rules are not reprinted.
projectYesProject slug the claim is about.

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare this is a safe read (readOnlyHint true, destructiveHint false), so the bar is lower. The description does add non-obvious context: that it returns an index/map rather than full content, and that a follow-up arroway_read does not get cheaper. However, the shape of the returned map is left opaque, and 'in the project's language' handling is only implied.

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?

It is short, but front-loading is muddled: the imperative 'Call in the seconds BEFORE...' delays the actual return statement, and the ALL-CAPS 'AND THEN A MAP' interrupt reads as emphasis rather than structure. The sentences are compressed to the point of ambiguity.

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

Completeness3/5

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

There is no output schema, so the description must carry return semantics; it says decisions plus a map of titles and handles but never explains what a handle is or how to use the map afterwards. For a read tool with three parameters it is workable but leaves the agent guessing about the response layout.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are already documented, and the baseline is 3. The description adds one genuine usage cue for `draft` (pass text you intend to publish), but says nothing extra about `since` beyond what the schema states about checkpoints and suppressed standing rules.

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 states a concrete return: what is already decided plus 'a MAP of the titles and handles'. That is specific enough to tell it apart from arroway_read, which is explicitly described as returning a mapped item 'in full'. The phrasing is idiosyncratic ('Call in the seconds', 'A MAP') but the resource and output are identifiable.

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?

It gives explicit timing ('BEFORE you tell the person something or propose a course of action') and a separate trigger ('Before publishing text for others, pass it as draft'). It also names the alternative arroway_read and states the exact selection rule: use it 'to be sure, never to pay less'.

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

arroway_passPass unfinished work forwardAInspect

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).

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.

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.

arroway_readRead ArrowayB
Read-only
Inspect

Read Arroway for a project BEFORE acting on any task related to it. Name a #handle in include to recover that object's full body.

NameRequiredDescriptionDefault
sinceNoCheckpoint from a previous read of THIS project, so standing rules are not reprinted.
handoffNoOptional: #handle of an OPEN handoff. The read uses its reading list (none: falls back to the normal read). Cannot be combined with include.
includeNo#handles whose full body you need; they come first and others fall out.
projectYesProject slug, e.g. 'seven50'
task_contextNoOptional: what you are about to do; it ranks results. The declaration alone is NOT evidence of use: a matching completion residue from the same session must corroborate it.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, non-destructive and closed-world, so the safety profile is covered. The description adds the pre-action sequencing rule and a note that include recovers a full object body, but says nothing about what a read returns, how 'since' checkpoints behave, or what happens when handles are out of scope.

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 with the most important instruction (read before acting) front-loaded, and no filler. Slightly compressed to the point of terseness — '#handle' and 'object's full body' assume domain familiarity.

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

Completeness3/5

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

For a five-parameter tool with no output schema, the description leaves the return value entirely unexplained, and 'Read Arroway' never states what Arroway's contents are (rules, handoffs, objects). The pre-action guidance and include hint cover invocation, but an agent cannot predict what comes back.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter already carries its own documentation, making 3 the baseline. The description's mention of '#handle in include' largely restates the schema's 'full body you need; they come first and others fall out' rather than adding format or precedence detail.

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?

States a specific verb and resource ('Read Arroway for a project') plus the timing constraint 'BEFORE acting on any task related to it.' It is clear enough to distinguish a full project read from siblings like arroway_search_log or arroway_log, though it does not name any of the 18 siblings to sharpen the boundary.

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?

Gives a clear when-to-use trigger ('BEFORE acting on any task related to it'), which is genuinely useful sequencing guidance. However, it offers no when-not conditions and no alternatives among the many sibling tools (e.g. catch_up, continue, search_log), so the agent must infer routing on its own.

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

arroway_rememberPropose a durable memoryAInspect

Save a durable memory (decision/rule/fact/preference/reference/identity) only when it would change a DIFFERENT task. Unsanctioned in THIS conversation, it is a PROPOSAL. 'identity' is WHO someone is: the user's circle goes in their personal project, a business's people in that business's project. A finding cannot replace a sanctioned memory.

NameRequiredDescriptionDefault
typeYesKind of memory.
titleYesShort, unique within the project
topicNoOptional free tag (e.g. 'marketing').
contentYesThe norm itself, shortest form that still governs. Biography goes in why_source; a case goes in example.
essenceYesThe operative norm or fact in ONE line.
exampleNoA case, shown in the panel. It NEVER travels in reads, so any criterion goes in content.
expiresNotrue ONLY for a dated STATUS that would be stale after review_at. If unsure, omit.
projectYesProject slug. Not from the person or a read this session? It is a guess: check the arroway_catch_up roster.
review_atNoYYYY-MM-DD. Required for a fact, which leaves reads after it.
treatmentNo`governed` enters the person's review queue, a real cost to them; `finding` costs nobody a review and is never a norm. Does it GOVERN what someone may or must do, or only INFORM? Informs, with a source an agent can reopen and compare: finding (only fact and reference qualify).
backfilledNotrue for sourced HISTORY from before Arroway, on the topic just worked on; never a dump.
source_ptrNoPointer to the living source, when verifiable
why_sourceNoWhere it came from. This does NOT travel in reads; the panel shows it.
contradictionNoRequired with supersedes_id: what this changes in the earlier memory.
pin_suggestedNoThere is no default. Your judgement on pinning; above the ceiling it becomes a proposal of the pin alone.
supersedes_idNo#handle this replaces, only for the SAME point: acting on either would already satisfy or violate the other. A shared topic is not enough.
kill_conditionYesMandatory: explicit revocation / named trigger / review date
related_checkedNoSecond call only: true after reading the related memories shown.
decided_by_humanYestrue ONLY if the person stated or sanctioned it in THIS conversation; else a proposal. A proposal is never free: it costs that person a review. Then only a PINNED memory travels in every read; a normal one competes for space in the block relevant to each task. Never write an instruction to check, verify, be careful or look at the source, a step of a routine, or anything here only because something went wrong once.
split_consideredNotrue only after looking for seams; splitting is the default.
example_consideredNoSecond call only: true if the flagged example is criterion the rule needs.
pin_decision_tokenNoSecond call only: the first call's token, unchanged.
related_check_tokenNoSecond call only: token returned with the related memories.
pin_requested_by_humanNotrue ONLY if the person told you in THIS conversation to keep it in every session. Sanctioning the CONTENT is not asking for the pin. Pins above any ceiling.
revoked_reconsiderationNoSecond call only: the person's words in THIS conversation reconsidering a revoked finding.
treatment_justificationNoRequired for a finding: why it is verifiable context, not policy.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations only declare a non-read-only, non-destructive write. The description goes further by disclosing the proposal/sanctioned distinction, the fact that a proposal imposes a review cost on the person, and the read-visibility asymmetry between findings and sanctioned memories. It does not explain the multi-call token flow or what the tool returns, which limits it to a 4.

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?

Four dense sentences, front-loaded with the gating condition before the type taxonomy and scoping rules. No filler. Slight cost from jargon used before definition ('a finding') and a compressed final sentence that reads as an appended caveat.

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

Completeness3/5

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

For a 26-parameter write tool with a multi-phase protocol, the description covers the conceptual bar for saving but says nothing about the two-call flow implied by token parameters (pin_decision_token, related_check_token, related_checked), nor about pin ceilings or what the call returns. Those details live only in per-parameter schema text, so an agent can recover them, but the description itself is thin relative to the tool's complexity.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description does add genuine meaning for the 'identity' type, specifying that a user's circle belongs in their personal project and a business's people in that business's project — a placement rule absent from the enum's 'Kind of memory' text. The parenthetical type list otherwise just restates the enum, so it does not rise above baseline.

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?

States a specific verb and resource ('Save a durable memory') and enumerates the six memory kinds, then adds the decisive gating rule: only when it would change a DIFFERENT task. That distinguishes it from logging or verification siblings without naming them. It stops short of explicitly contrasting with arroway_norms or arroway_log, so a 4 rather than a 5.

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?

Gives a hard inclusion test ('only when it would change a DIFFERENT task') and explains the consequence when the person has not sanctioned it in the current conversation ('it is a PROPOSAL'). It also carves out an explicit exclusion: 'A finding cannot replace a sanctioned memory.' It never names a sibling to use instead when the bar is not met, which keeps it out of 5 territory.

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

arroway_retireRetire a sanctioned memory, on the person's instructionA
Destructive
Inspect

Retire a SANCTIONED memory when the person told you to remove it and nothing replaces it. With a corrected version, use arroway_remember supersedes_id; for your own pending proposal, arroway_withdraw.

NameRequiredDescriptionDefault
whyNoOptional: what the person said made it obsolete, in their terms.
memoryYesThe memory to retire — the #handle from a read is enough.
projectYesProject slug.
decided_by_humanYesMust be true, and only when the person explicitly told you to remove it IN THIS CONVERSATION.

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is known. The description adds the real precondition — human instruction and no replacement — which is genuinely useful context beyond the annotations. It still does not say whether retirement is reversible, what happens to the retired memory, or what the person sees afterwards.

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

Conciseness5/5

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

Two sentences, zero filler, with the eligibility condition front-loaded and the two routing alternatives packed into the second sentence.

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 four-parameter destructive tool with no output schema, the definition covers the decisive questions: who must authorise it, when it is the wrong tool, and where to go instead. The remaining gap is what retirement actually does to the memory and whether it can be undone, which matters for a destructive operation.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters including the decided_by_human constraint and the #handle convention are already documented in the schema. The description adds no further parameter-level meaning, which is the baseline case.

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?

States a specific verb plus a narrowly qualified resource ('Retire a SANCTIONED memory'), and immediately names two sibling tools that cover the neighbouring cases, so an agent can separate this from arroway_remember and arroway_withdraw without opening any 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?

Gives an explicit trigger condition ('the person told you to remove it and nothing replaces it') and two explicit alternatives with their selecting conditions: a corrected version routes to arroway_remember supersedes_id, an agent's own pending proposal routes to arroway_withdraw.

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

arroway_search_logFind where something appeared in the dated logA
Read-only
Inspect

Find WHERE a literal term appeared in the recent dated log, in one project or all of them. It searches what happened, not curated memory.

NameRequiredDescriptionDefault
queryYesLiteral term or phrase; case-insensitive.
projectNoOptional project slug; omit to search them all.

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description still adds real behavior beyond that: the search is literal, not semantic, and is limited to the 'recent' log rather than full history. It does not say how recent, how results are ordered or capped, or whether matches are substring or token based, which is the remaining gap for an agent deciding if results are exhaustive.

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

Conciseness5/5

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

Two short sentences, front-loaded with the verb and resource, with the memory/log disambiguation placed second because it is secondary. Every clause carries information; nothing is padding.

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 two-parameter read-only tool with full schema coverage, annotations, and no output schema, the description covers purpose, scope, and matching mode adequately. The one loose end is the undefined 'recent' window, which matters for judging whether results are complete, but it is a minor omission rather than a blocking one.

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

Parameters3/5

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

Schema coverage is 100%: query is documented as a literal, case-insensitive term up to 200 chars, and project as an optional slug whose omission searches all projects. The description restates rather than extends this, adding no syntax, matching, or slug-format detail beyond the schema, so the baseline 3 applies.

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?

Names a specific verb (find), the resource (dated log), and the scope (one project or all of them), and contrasts the target of the search: 'searches what happened, not curated memory.' That distinguishes it conceptually from the memory-oriented siblings such as arroway_remember and arroway_read without needing to open a schema.

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?

The phrase 'not curated memory' tells the agent when to pick this over the memory tools, and 'in one project or all of them' encodes the project-vs-global choice. It stops short of naming an alternative tool explicitly or stating when not to use it, so it is clear context rather than full routing guidance.

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

arroway_start_projectOpen a new projectAInspect

Open a NEW project when the work has no home; it needs slug, name and scope. Propose them to the person FIRST. update=true renames a project you own and rewrites its scope when the person asks or the scope is wrong; the slug stays. invite brings someone in by email.

NameRequiredDescriptionDefault
nameNoHow people will call it
slugYesShort, lowercase, hyphenated, unique — e.g. 'trading-solana'
scopeNoWhat belongs here and what does not: the subject AND what is out.
inviteNoEmail of a person to bring in. Returns a checkout link if a team plan is needed.
updateNotrue: change name and scope of the existing project at slug.

TDQS

A3.9/5.0
Behavior4/5

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

Beyond the annotations (readOnly=false, destructive=false), it discloses that update rewrites scope, that the slug is immutable on rename, that ownership is required, that invite can return a checkout link for a team plan, and that parameters should be confirmed with the person first. Notably, rewriting an existing scope is a lossy overwrite that destructiveHint=false does not signal, and the description only half-compensates by saying "rewrites its scope".

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?

Roughly three compact sentences, front-loaded with the primary create action, then the update and invite modes. Slight terseness in "it needs slug, name and scope" and "Propose them to the person FIRST" reads as clipped, but nothing is padded.

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?

With five parameters, no output schema, and annotations already covering safety, the description covers every parameter's intent plus the precondition of confirming values with the person. It omits failure behavior (e.g. slug collision on create, update against an unowned project), which is the main remaining gap.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all five parameters and the baseline is 3. The description still adds real meaning the schema lacks: update implies the slug stays fixed, and invite's email produces a checkout link when a team plan is required.

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?

"Open a NEW project" gives a specific verb and resource, and the description explicitly separates the create path from the in-tool update and invite modes. It never names or contrasts a sibling tool (e.g. arroway_move or arroway_claim), so an agent comparing this against the other 17 arroway_* tools gets no help from the text alone.

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?

"when the work has no home" is a clear use condition, and update has its own trigger ("when the person asks or the scope is wrong"). It also prescribes an interaction pattern: propose slug, name, and scope to the person FIRST. No when-not guidance or alternative tool is offered, which keeps it off a 5.

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

arroway_verifyRecord what the source saysA
Destructive
Inspect

Record what a memory's source says when your work ALREADY took you there — never go verifying memories as a task. A conflicting one: propose the correction with arroway_remember. On a FINDING, source_gone archives it and a conflict is corrected in place.

NameRequiredDescriptionDefault
noteNoRequired for conflicts (what the source says) and source_gone (what proves removal).
memoryYesThe #handle from the read, or the full id.
outcomeYessource_gone = PROVEN removed, never a timeout or login wall. conflicts = the source says something different.
projectYesProject slug.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations declare destructiveHint=true and readOnlyHint=false, so the description must add specifics about what gets destroyed. It does: source_gone archives the memory and a conflict is corrected in place, which tells the agent the write is consequential. It doesn't clarify whether these are reversible or what confirmation is returned.

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 short sentences with the key constraint ('never go verifying memories as a task') front-loaded, and the alternative routing placed immediately after. A few fragments ('On a FINDING', 'A conflicting one') are terse to the point of ambiguity, but nothing is padding.

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?

No output schema exists, so the description carries the burden of explaining consequences, and it covers the destructive outcomes (archive on source_gone, in-place correction on conflict). It leaves the 'matches' path and any response/confirmation behavior unstated, which is a small but real gap for a mutation tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the enum meanings and note requirement are already documented in structured data. The description adds only marginal semantics, mostly restating that a conflicting source leads to a correction via arroway_remember. Baseline 3 is appropriate.

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 states a specific verb and resource: recording what a memory's source says. It distinguishes itself from arroway_remember by assigning corrections to that sibling. The title 'Record what the source says' reinforces the purpose, though phrases like 'On a FINDING' are undefined and slightly obscure the exact outcome set.

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?

Explicit when-not guidance is given: 'never go verifying memories as a task', only record when work already took you there. It also names the alternative for the conflict case (arroway_remember). It stops short of spelling out what to do for a plain 'matches' outcome or how this interacts with arroway_read / arroway_complete_read.

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

arroway_withdrawTake back your own pending proposalAInspect

Take back a pending PROPOSAL that turned out wrong, usually because the person corrected you. Not for sanctioned memories. If the corrected version is durable, also write it with arroway_remember.

NameRequiredDescriptionDefault
whyYesWhat made it wrong — usually what the person said.
memoryYes#handle of the proposal, from a read
projectYesProject slug.
other_author_confirmedNoSecond call only, after Arroway said someone else's AI wrote the proposal: true to go ahead.

TDQS

A4/5.0
Behavior4/5

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

Annotations only declare the generic non-readOnly/non-destructive profile; the description adds genuinely new behavior: only pending proposals are affected, sanctioned memories are out of scope, and a companion write may be needed afterward. It does not explain reversibility, whether the withdrawn handle is freed, or the two-step other_author_confirmed confirmation flow that the schema implies.

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

Conciseness5/5

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

Three short sentences, front-loaded with the action and scope, then the exclusion, then the recommended follow-up. No filler or restatement of the title.

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 four-parameter mutation tool with full schema coverage and no output schema, the description covers purpose, exclusion, and the follow-up write. It leaves unexplained the two-call confirmation path and the post-withdrawal state of the proposal.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters (why, memory, project, other_author_confirmed) are already documented, including the 'second call only' confirmation semantics. The description adds nothing parameter-specific beyond the schema, so the baseline 3 applies.

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?

States a concrete verb and resource: 'Take back a pending PROPOSAL,' with the qualifier 'pending' bounding the scope. It also carves out an exclusion ('Not for sanctioned memories'), which separates it from lifecycle siblings like arroway_retire, though it never names which tool handles the sanctioned case.

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?

Gives an explicit trigger ('turned out wrong, usually because the person corrected you'), an explicit exclusion ('Not for sanctioned memories'), and a follow-up routing to arroway_remember when the correction is durable. No guidance on what to do instead for sanctioned memories, which is the only gap.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 18 tool updates
    • Changedarroway_catch_up1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedarroway_claim1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedarroway_close1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedarroway_complete_read1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedarroway_continue1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedarroway_export1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedarroway_import1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedarroway_log4 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / fulfills / description
        Previous value: -"Memories whose 'dies when' this work made true (decision/fact/reference received in full in a read). Never one that merely looks old."New value: +"Memories whose 'dies when' this work made true. Never one that merely looks old."
      • removedInput schema / properties / fulfills / items / additionalProperties
        Removed value: -false
      • changedInput schema / properties / operational / description
        Previous value: -"true for HOW the work went (failures, measurements, self-corrections): kept for catch-up, out of task reads."New value: +"true for HOW the work went: kept for catch-up, out of task reads."
    • Changedarroway_move1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedarroway_norms3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / draft / description
        Previous value: -"Optional: the text you will publish or say (PR, comment, message, page), ending with one line in the project's language on what it claims, recommends and names."New value: +"Text you will publish, ending with one line in the project's language on what it claims, recommends and names."
      • changedInput schema / properties / since / description
        Previous value: -"Optional: checkpoint from a previous arroway_norms call for THIS project (not the read's). Omit after compaction or in a new conversation."New value: +"Checkpoint from a previous arroway_norms call for THIS project, so standing rules are not reprinted."
    • Changedarroway_pass2 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."
    • Changedarroway_read4 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / handoff / description
        Previous value: -"Optional: #handle of an OPEN handoff you are continuing; the read is built from its reading list (none: falls back to the normal read). Cannot be combined with include."New value: +"Optional: #handle of an OPEN handoff. The read uses its reading list (none: falls back to the normal read). Cannot be combined with include."
      • changedInput schema / properties / include / description
        Previous value: -"#handles whose full body you need; they come first, so others fall out — it chooses, it does not add."New value: +"#handles whose full body you need; they come first and others fall out."
      • changedInput schema / properties / since / description
        Previous value: -"Optional: checkpoint from a previous read of THIS project, so standing rules are not reprinted. Omit after compaction or in a new conversation."New value: +"Checkpoint from a previous read of THIS project, so standing rules are not reprinted."
    • Changedarroway_remember7 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / content / description
        Previous value: -"The norm ITSELF, as if true today, in the shortest form that still governs correctly. Biography (who, when, quotes, dated numbers) goes in why_source; a specific case in example."New value: +"The norm itself, shortest form that still governs. Biography goes in why_source; a case goes in example."
      • changedInput schema / properties / example / description
        Previous value: -"A case illustrating the rule, shown in the panel; it NEVER travels in reads, so any criterion goes in content."New value: +"A case, shown in the panel. It NEVER travels in reads, so any criterion goes in content."
      • changedInput schema / properties / pin_suggested / description
        Previous value: -"Your judgement on pinning (travels in EVERY read). There is no default: required on a rule's second call. Above the ceiling it becomes a proposal of the pin alone."New value: +"There is no default. Your judgement on pinning; above the ceiling it becomes a proposal of the pin alone."
      • changedInput schema / properties / review_at / description
        Previous value: -"YYYY-MM-DD when this stops being true on its own. REQUIRED for a fact, which leaves reads after it."New value: +"YYYY-MM-DD. Required for a fact, which leaves reads after it."
      • changedInput schema / properties / supersedes_id / description
        Previous value: -"#handle of the memory this replaces, only for the SAME point: acting on either would already satisfy or violate the other. A shared topic is not enough."New value: +"#handle this replaces, only for the SAME point: acting on either would already satisfy or violate the other. A shared topic is not enough."
      • changedInput schema / properties / why_source / description
        Previous value: -"Where it came from: the ONLY place for biography. This does NOT travel in reads; it is shown in the panel."New value: +"Where it came from. This does NOT travel in reads; the panel shows it."
    • Changedarroway_retire1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedarroway_search_log1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedarroway_start_project2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / invite / description
        Previous value: -"Email of a person to bring in; name and scope not needed. Returns a checkout link if a team plan is needed."New value: +"Email of a person to bring in. Returns a checkout link if a team plan is needed."
    • Changedarroway_verify2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / outcome / description
        Previous value: -"source_gone = PROVEN removed (404, file deleted, record gone), never mere unavailability (timeout, login wall, outage). conflicts = the source says something different."New value: +"source_gone = PROVEN removed, never a timeout or login wall. conflicts = the source says something different."
    • Changedarroway_withdraw1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
  2. 1 tool update
    • Changedarroway_start_project2 fields changed
      • addedInput schema / properties / invite
        Added value: +{
        +  "description": "Email of a person to bring in; name and scope not needed. Returns a checkout link if a team plan is needed.",
        +  "maxLength": 200,
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "slug",
        -  "name",
        -  "scope"
        -]New value: +[
        +  "slug"
        +]
  3. 1 tool update
    • Removedarroway_configure_referrer
  4. 1 tool update
    • Changedarroway_start_project1 field changed
      • addedInput schema / properties / update
        Added value: +{
        +  "description": "true: change name and scope of the existing project at slug.",
        +  "type": "boolean"
        +}

Publisher details

Operator
Arroway · Publisher source
Vendor relationship
First-party
Restrictions
Requires an Arroway account. The first connection opens sign-in (Google or an email link) and OAuth authorization; there is nothing to paste. · Publisher source

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    A
    maintenance
    A living map of all your work: projects, tasks, decisions and what waits on whom, kept by you and your agents through the same tools, with every change logged.
    10
    3 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents from different companies to share research, reply in typed threads, draft proposals, and vote with rationales on decisions. Humans then ratify the winning proposals in a local dashboard, which writes versioned decision records into the chosen project's repository.
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Self-hosted task tracker and MCP server for AI coding agents. Append-only case files preserve decisions, failed attempts, questions, and check results across sessions. A live web board lets people track progress and answer agents. Runs locally in Docker and connects to Claude Code, Codex, Cursor, and other Streamable HTTP MCP clients. MIT licensed.
    30
    6
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources