Arroway
by oaleviola · remote · no sign-in to list tools · v0.1.45 · published by GitHub user oaleviola
Arroway orchestrates people and AI agents around the decisions in force.
18 tools: 2 can delete or cancel things, 1 do something that can't be undone, 11 change things and 4 only read.
Scanned Oct 21, 2026
- Deletes or cancels2Claude Code: deny: see these tools
- Can't be undone1Claude Code: ask: see these tools
- Changes things11Claude Code: ask: see these tools
- Only reads4Claude Code: allow: see these tools
3 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http arroway https://www.arroway.app/api/mcpFindings
Matches of fixed checks, with the text they matched.
- Warnarroway_catch_up
The server marks "arroway_catch_up" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "call": a word for a change.
- Warnarroway_norms
The server marks "arroway_norms" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "call": a word for a change.
- Warnarroway_log
The server marks "arroway_log" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "arroway_log" says "log": a word for reading.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
18 tools
Deletes or cancels 2Claude Code: deny
arroway_retireRetire a SANCTIONED memory when the person told you in this conversation to remove it and nothing replaces it.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Retire a SANCTIONED memory when the person told you in this conversation to remove it and nothing replaces it. Archived, never deleted. With a corrected version, use arroway_remember supersedes_id; for your own pending proposal, arroway_withdraw.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: false
arroway_verifyRecord what a memory's source says when your work ALREADY took you there — never go verifying memories as a task, never guess an outcome.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Record what a memory's source says when your work ALREADY took you there — never go verifying memories as a task, never guess an outcome. A FACT proven gone is retired at once; a conflicting one when you propose the correction with arroway_remember supersedes_id. On a FINDING, source_gone archives it and a conflict is corrected in place. Rules and decisions are only marked.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
Can't be undone 1Claude Code: ask
arroway_withdrawTake back a pending PROPOSAL that turned out to be wrong, usually because the person corrected you.No findings
Why it is in this group
- The name "arroway_withdraw" says "withdraw": a word that usually means money moves, which cannot be taken back.
Description, as the server wrote it Take back a pending PROPOSAL that turned out to be wrong, usually because the person corrected you. Not for sanctioned memories. It is kept as withdrawn, with your reason. If the corrected version is durable, also write it with arroway_remember.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Changes things 11Claude Code: ask
arroway_catch_upCall ONCE at the START of a session, before there is a task: what happened recently across all of this person's projects, opening with the roster of their projects (slug and purpos…1 finding
Why it is in this group
- The description's first verb is "call": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "arroway_catch_up" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "call": a word for a change.
Description, as the server wrote it Call ONCE at the START of a session, before there is a task: what happened recently across all of this person's projects, opening with the roster of their projects (slug and purpose) and open handoffs.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
arroway_claimMark that you are taking an open handoff BEFORE working on it, so parallel sessions do not duplicate it.No findings
Why it is in this group
- The description's first verb is "mark": a word for a change.
Description, as the server wrote it Mark that you are taking an open handoff BEFORE working on it, so parallel sessions do not duplicate 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.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
arroway_closeClose an open handoff when its work is DONE, alongside the arroway_log entry that records the residue.No findings
Why it is in this group
- The name "arroway_close" says "close": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
arroway_exportExport OUT of a project what it has DECIDED, as a portable memory pack for another team or project.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Export OUT of a project what it has DECIDED, as a portable memory pack for another team or project. Only sanctioned, live memories travel: a FINDING never was one, so findings stay and the answer tells you how many did. Nothing about people travels.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
arroway_importBring a memory pack made by arroway_export INTO a project.No findings
Why it is in this group
- The name "arroway_import" says "import": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
arroway_logRecord the durable residue of a COMPLETED task in the team-visible daily log: what someone arriving later needs in order not to redo it, dated state included.1 finding
Why it is in this group
- The name "arroway_log" says "log": a word for reading.
- The server marks it as not read-only (readOnlyHint: false).
Findings
- Warn
The server marks "arroway_log" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "arroway_log" says "log": a word for reading.
Description, as the server wrote it Record the durable residue of a COMPLETED task in the team-visible daily log: what someone arriving later needs in order not to redo it, dated state included. ALWAYS write the authored essence (only a frozen catalog without that field may omit it). If the person corrected you for re-litigating a decision, say so. If this work made a read memory's 'dies when' true, name it in fulfills and it is retired with this entry.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
arroway_moveMove something to the project it belongs in.No findings
Why it is in this group
- The name "arroway_move" says "move": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
arroway_normsCall in the seconds BEFORE you tell the person something or propose a course of action: returns what is already decided (the project's and this person's own) AND THEN A MAP of the …1 finding
Why it is in this group
- The description's first verb is "call": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "arroway_norms" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "call": a word for a change.
Description, as the server wrote it Call in the seconds BEFORE you tell the person something or propose a course of action: returns what is already decided (the project's and this person's own) AND THEN A MAP of the titles and handles of everything else. 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: what it touches comes back in full.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
arroway_passCall when you STOP with the task unfinished (out of time, blocked, told to stop): it leaves a HANDOFF served at the top of every read until someone closes it; a completed task ends…No findings
Why it is in this group
- The description's first verb is "call": a word for a change.
Description, as the server wrote it Call when you STOP with the task unfinished (out of time, blocked, told to stop): 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). Write what the next session needs to continue, never a dump.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
arroway_rememberSave a durable memory (decision/rule/fact/preference/reference/identity): only what would change what someone does on a DIFFERENT task.No findings
Why it is in this group
- The description's first verb is "save": a word for a change.
Description, as the server wrote it Save a durable memory (decision/rule/fact/preference/reference/identity): only what would change what someone does on a DIFFERENT task. Unsanctioned in THIS conversation, it is a PROPOSAL — never present it as a decision. 'identity' is WHO someone is: the user's circle goes in their personal project, a business's people in that business's project. A sourced fact or reference that only informs can be a finding, which cannot replace a sanctioned memory.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
arroway_start_projectOpen a NEW project when the work at hand has no home in Arroway; it needs slug, name and scope.No findings
Why it is in this group
- The name "arroway_start_project" says "start": a word for a change.
Description, as the server wrote it Open a NEW project when the work at hand has no home in Arroway; it needs slug, name and scope. Propose the name and scope to the person FIRST and call only once they agree. 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 a person into the project at slug, when the person wants them in.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
Only reads 4Claude Code: allow
arroway_complete_readAcknowledge the final part of a multi-part Arroway read with its read_id and receipt, closing the sequence.No findings
Why it is in this group
- The name "arroway_complete_read" says "read": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
arroway_continueFetch the next part of a read that did not fit in one response (read_id and receipt of the preceding part).No findings
Why it is in this group
- The description's first verb is "fetch": a word for reading.
Description, as the server wrote it Fetch the next part of a read that did not fit in one response (read_id and receipt of the preceding part). Returns the next slice of what the first part named, with a new receipt; the part marked complete is the last, and arroway_complete_read acknowledges it. OPTIONAL: the first part already counts as delivered and names what later parts hold.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
arroway_readRead Arroway for a project BEFORE acting on any task related to it.No findings
Why it is in this group
- The name "arroway_read" says "read": a word for reading.
Description, as the server wrote it Read Arroway for a project BEFORE acting on any task related to it. It serves the authored essence of memories, dated-log entries and handoffs by default; name a #handle in include to recover that object's full body.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
arroway_search_logFind WHERE a literal term or phrase appeared in the recent dated log (essence and body), across every project of this person or one.No findings
Why it is in this group
- The name "arroway_search_log" says "search": a word for reading.
Description, as the server wrote it Find WHERE a literal term or phrase appeared in the recent dated log (essence and body), across every project of this person or one. Returns short excerpts anchored by project, date and entry. It searches what happened, not curated memory.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 0.1.45. Values in angle brackets are yours to fill in.
claude mcp add --transport http arroway https://www.arroway.app/api/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__arroway__arroway_read",
"mcp__arroway__arroway_continue",
"mcp__arroway__arroway_complete_read",
"mcp__arroway__arroway_search_log"
],
"ask": [
"mcp__arroway__arroway_catch_up",
"mcp__arroway__arroway_norms",
"mcp__arroway__arroway_log",
"mcp__arroway__arroway_remember",
"mcp__arroway__arroway_start_project",
"mcp__arroway__arroway_withdraw",
"mcp__arroway__arroway_export",
"mcp__arroway__arroway_import",
"mcp__arroway__arroway_move",
"mcp__arroway__arroway_pass",
"mcp__arroway__arroway_claim",
"mcp__arroway__arroway_close"
],
"deny": [
"mcp__arroway__arroway_verify",
"mcp__arroway__arroway_retire"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as arroway. Review it before you use it.
