agent-room-ops

agent-room-ops is a skill for Claude Code, Codex from sonichi/sutando. It costs 0 tokens per session (5,486 once invoked), scanned A, original, MIT.

A collection of tools for an agent participating in a shared chat room, including reading history, fetching media, sending files, posting text, and adding reactions. It uses a gateway that handles the platform's credentials and membership rules.

In plain words
What is it for?
Use it to read recent room messages, retrieve incoming media, upload files, post status or replies, and acknowledge messages with reactions.
Why use it?
It gives an agent the basic ways to participate in a room without giving each tool direct access to platform credentials. It also groups room actions into one consistent interface.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one. Also seen: mentions CLAUDE.md.

Good fit Use it to read recent room messages, retrieve incoming media, upload files, post status or replies, and acknowledge messages with reactions.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/sonichi/sutando/agent-room-ops
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add sonichi/sutando --skill agent-room-ops
Clone the repo
git clone --depth 1 https://github.com/sonichi/sutando

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for agent-room-ops

README.md
[![agentmods](https://agentmods.dev/badge/skills/sonichi/sutando/agent-room-ops/github.svg)](https://agentmods.dev/skills/sonichi/sutando/agent-room-ops)
Your own site
<a href="https://agentmods.dev/skills/sonichi/sutando/agent-room-ops"><img src="https://agentmods.dev/badge/skills/sonichi/sutando/agent-room-ops/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for agent-room-ops

Your own site · 80×15
<a href="https://agentmods.dev/skills/sonichi/sutando/agent-room-ops"><img src="https://agentmods.dev/badge/skills/sonichi/sutando/agent-room-ops.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 0 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 5,486 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • NVIDIA SkillSpector pass 7 Sept 2026
How audits are shown
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00000 $0.05486
Opus 5.5 $0.00000 $0.02194
Sonnet 5.5 $0.00000 $0.01097
Haiku 4.5 $0.00000 $0.00549

Measured yesterday against content hash 041e92bf8b77, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

agent-room-ops scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.

The scan reads SKILL.md. This mod also ships 23 executable files (_gateway.py, authz.py, display.py, …), listed below but not scanned — reading those needs a real analyzer, not pattern matching.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/agent-room-ops/SKILL.md · 347 lines

How it starts

The opening of the file, as written. The whole thing — 347 lines — stays where its author put it; the contents beside it link to each section on GitHub.

room-ops — an agent's room-participation capability collection

For an all-room analysis sweep, use the tested window collector and coverage contract in history-workflow.md. Archive-derived room IDs and fixed recent limits cannot establish all-room coverage. Fallback text posts support --strict say ROOM --body-file FILE and require receipt inspection.

DEPRECATED — room ops (POST <gateway>/v1/room) is being removed. Use the AG2 Space MCP room Actions instead. room_ops.py is kept only as a fallback for when the MCP is unreachable (or for the gaps listed below) — never the first path.

Use the AG2 Space MCP first

Call room Actions through the existing façade tools only — room.actions.search, room.actions.describe, room.action.read (zero-effect reads), room.action.execute (mutations), operation.inspect — plus the fixed room.list. Availability is per-room and per-actor, so discover before calling. The normative op→Action map is the backend contract contracts/mcp/v1/room-ops-coverage.json (explained in docs/mcp-room-ops-coverage.md).

room_ops.py verb MCP call Action
rooms room.list (fixed tool) —
read room.action.read room.context.read
members room.action.read room.members.list
mention (name → mxid) room.action.read room.member.resolve, then room.message.send with the mxid in mentions
say room.action.execute room.message.send
react / unreact room.action.execute room.message.react / room.message.unreact
send (upload) room.action.execute room.media.upload
fetch room.action.execute room.media.link (an expiring viewer link, not a local file)
events emit room.action.execute room.event.send
state read / write room.action.read / room.action.execute room.state.read / room.state.write

Gotchas

  • Mutations need an operation_id. What to do on ACTION_OUTCOME_UNKNOWN depends on the Action:
    • Built-in room.* Actions: retry with the same operation_id, never a new one, or the action may run twice. A reused id can return the earlier result, so to repeat an action on purpose, use a new id.
    • devapp.app.* Actions have no duplicate protection — every call runs. Pass the error's details.operation_id to operation.inspect first, and send again only if it shows the call was not dispatched (backend docs/devapp-mcp.md).
  • room.actions.search with a multi-word query can return nothing. Use room.actions.describe <exact name>, or search with no query and scan the list.
  • To hand off with room.message.send, resolve the name first (room.member.resolve, never guess), then pass the mxid in mentions and write it in the body too (the relay scans both). Parameters vary per room, so room.actions.describe room.message.send before relying on mentions.

Read the full file on GitHub · 347 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. yesterday Changed · -4 lines 041e92bf8b77
  2. 2d ago Changed · -1 lines 778a263e8a59
  3. 10d ago Changed · +3 lines 09ea4e7a4c3a
  4. 11d ago Changed · +1 lines 020bf22e536c
  5. 15d ago Changed · +6 lines a4e712995e71
  6. 23d ago Changed · +46 lines 8df1c619b8e1
  7. 24d ago Changed · +6 lines e0520c5a9ec8
  8. 1mo ago Changed · +3 lines 6c91da8d10b8
  9. 1mo ago Changed · +5 lines 2beca4e0e571
  10. 1mo ago First seen · 282 lines · 0 tokens per session scan A 3d6bc09bc5a0

Subscribe to this mod's changes

agent-room-ops is a skill published in the GitHub repository sonichi/sutando (399 stars, last pushed today), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 5,486 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

gmail

Manage Gmail email — drafting, sending, organizing, filters, vacation replies, and inbox analysis.

vellum-ai/vellum-assistant · 20 tokens

app-builder

Build and edit small, personal visual tools and artifacts — dashboards, trackers, calculators, data visualizations, charts, simple landing pages, and slide decks the user wants for THEMSELVES. This is the right skill whenever the user asks to "visualize this," "make a chart," or "build an artifact" for their own use…

vellum-ai/vellum-assistant · 162 tokens

assistant-migration

Migrate from ChatGPT, Claude, OpenClaw, Hermes, Manus, and other AI assistants into Vellum by inspecting their data exports, conversation archives, files, prompts, custom instructions, memory, saved memories, tools, GPTs, workflows, integrations, and relationships, then mapping as much as safely possible into Vellum…

vellum-ai/vellum-assistant · 90 tokens

guardian-verify-setup

Set up channel verification for phone, Telegram, Slack, Discord, or email channels via outbound verification flow.

vellum-ai/vellum-assistant · 26 tokens

stripe-link-wallet

Agent wallet on the Stripe Link CLI (link-cli). Connect the wallet, then buy, purchase and pay for things on the user's behalf via approved spend requests, one-time-use cards, and 402 / Machine Payment Protocol (MPP) payments.

vellum-ai/vellum-assistant · 52 tokens

vellum-memory-v2-migration

Perform a one-time migration from memory v1, to memory v2, which was introduced in 0.8.0.

vellum-ai/vellum-assistant · 34 tokens