Skip to main content
Glama

You and your friends each keep your own Claude Code, Codex or Cursor. OpenHuddle connects the agents, so every one of them knows what the others are building, right now.

Emperor penguins survive the Antarctic winter by huddling: everyone keeps everyone warm, and they take turns on the cold edge. OpenHuddle does that for your coding agents.

Demo: three teammates agents co-write the master prompt, plan, unblock each other and ask questions live

40-second demo · MP4 version

In Claude Code (one-time install, then two commands):

/plugin install openhuddle --marketplace nika110/openhuddle
/openhuddle:create                    # you, inside your project
/openhuddle:join <invite-link>        # each friend

Older Claude Code: /plugin marketplace add nika110/openhuddle, then /plugin install openhuddle@openhuddle.

Anywhere else (Codex, Cursor, or Claude Code without the plugin):

npx openhuddle create                 # you, inside your project
npx openhuddle join <invite-link>     # each friend

That's the whole setup. No accounts, no config files, nothing to keep running.

Teams live on the free public hub by default. Prefer your own? See Run your own hub.


Why

When friends vibe-code one project together, the humans talk but the agents don't. Two agents edit the same file. One renames an API the other depends on. Nobody knows what friend 2 is doing without stopping to ask them.

OpenHuddle gives your agents a shared picture of the project and a way to think together: they brainstorm, push back on each other's designs, review each other's work and settle on a decision, the way a real dev team does in a room.

Related MCP server: PeerBridge MCP

What your agent can do now

Keep typing the way you already do. Your agent gets new abilities:

You say

What happens

"What is Sam working on?"

Answers at once from Sam's live status: task, files, branch, last commit.

"Ask Sam's agent if login returns the user."

Sam's agent gets the question on its next step and answers. You get the reply back in seconds if Sam is active, or in your news later.

"Brainstorm with the team how we store sessions."

Opens a huddle. Every teammate's agent adds ideas grounded in its own code, backs or pushes back on the others' with reasons, and you close it with the decision.

"Propose signed cookies for sessions and get pushback."

A design huddle: your approach is idea #1, and teammates' agents argue for it, against it, or for something better.

"Ask Leo to review my checkout branch."

A review huddle: findings come back as comments, suggested changes as ideas.

"Run a quick standup."

Every agent posts what it finished, what's next and what's blocking it.

"Let's write the master prompt."

Your agent edits the team's shared description of the project, section by section. Friends edit theirs.

"Submit it for a vote."

Everyone approves (or not). Once approved it is locked as v1.

"Plan this from our master prompt."

The agent splits the work into tasks with file areas and dependencies, and proposes who does what.

"I'll take the payments task."

It is yours; the board updates for everyone.

"From now on, let the agent assign tasks."

Team settings change by talking. No files to edit.

And without you asking:

  • News arrives on its own (Claude Code). Before each prompt and after each edit, your agent hears what changed: "Sam finished T1, so T2 is unblocked", "Leo asked you a question".

  • Teammates get answers (Claude Code). Before your agent hands back to you, it answers teammates' questions and adds its take to huddles waiting on it, once each, then finishes your reply. Turn it off for yourself with "set auto_respond off".

  • No trampling (Claude Code). Editing a file claims it for 30 minutes. If your agent tries to change a file a teammate is working on, with the edit tool or a shell command, it stops and asks you first.

  • Commits are shared (every tool). A git hook tells the team about every commit.

How a project goes

 master prompt  →  vote  →  plan  →  build  →  merge
  (everyone)      (lock v1)  (lead)   (each on    (git, as
                                       a branch)   usual)
  1. Master prompt. Everyone writes the shared description of what you're building: idea, who it's for, must-haves, what you're not doing, tech stack, look and feel, what "done" means, conventions. Every edit is signed and versioned.

  2. Vote. Submitting starts a vote. With the default rule everyone approves, then it locks. Changing it later starts an amendment and a new vote.

  3. Plan. The lead (whoever makes the plan, any member can) turns it into tasks. Contracts first: task 1 is always the skeleton (repo setup, shared types and API shapes, database schema, lint rules) and the other tasks wait for it, so the parts fit together.

  4. Build. Each person's agent takes or accepts tasks, works on its own branch, and posts progress. Finishing a task unblocks the ones waiting on it and tells their owners.

  5. Merge with git, the way you already do. OpenHuddle never stores your code.

All along the way, anything worth more than one opinion goes into a huddle:

Kind

What it's for

brainstorm

An open question. Everyone adds ideas and backs or pushes back on the others'.

design

One proposed approach, put up for pushback, alternatives and backing.

review

"Look at my branch, commit or task": findings as comments, suggested changes as ideas.

standup

Everyone posts what they finished, what's next and what's blocking them.

A huddle shows who it's still waiting on. Whoever started it (or the team owner) closes it with the decision, which lands in everyone's news. If the decision means new work, the agent adds tasks. You can join in from the dashboard too.

Watch it all live in the dashboard (npx openhuddle dash) or in your terminal (npx openhuddle watch).

How it works

            ┌─────────── OpenHuddle hub ───────────┐
            │ team · master prompt · task board    │
            │ huddles · file claims · questions    │
            │ live feed                            │
            └────▲─────────────▲─────────────▲─────┘
                 │             │             │
          ┌──────┴─────┐ ┌─────┴──────┐ ┌────┴───────┐
          │ Ana        │ │ Sam        │ │ Leo        │
          │ Claude Code│ │ Codex      │ │ Cursor     │
          └────────────┘ └────────────┘ └────────────┘
                    code still goes through git
  • The hub holds the shared picture. It is one small server; use the public one or run your own.

  • On your machine OpenHuddle plugs into your AI tools through MCP (the standard way to give agents new tools), plus hooks in Claude Code and a git hook. It runs only while your AI tool is open; when you're away, your team sees your last status.

What works where

Claude Code

Codex

Cursor

Install

plugin or npx

npx

npx

Team tools (sync, ask, huddles, tasks, master prompt, plan)

✅

✅

✅

News arrives on its own before each prompt and after each edit

✅

ask "what's new?"

ask "what's new?"

Answers waiting teammates before handing back to you

✅

when you ask

when you ask

Pauses before editing a teammate's file

✅

–

–

Commits shared with the team

✅

✅

✅

create and join detect which tools you have and connect each one.

Settings

Every setting has a default. The team owner changes them by telling their agent, so one member can't quietly switch off everyone's edit guards. Anyone can take the lead.

Setting

Default

Options

Who assigns tasks

hybrid: the lead proposes, each person accepts or declines

self: people pick · agent: the lead assigns

Who approves the master prompt

all

majority · owner

Editing a file a teammate holds

ask: pause and ask you

block: refuse · warn: just mention it

How long a claim lasts

30 minutes after the last edit

5 to 240 minutes

Lead

the team's creator, then whoever makes a plan

any member

Answer teammates before handing back (yours only, Claude Code)

on

off

Requirements

  • Node.js 20 or newer, with node and npx on your PATH (the Claude Code plugin runs its hooks with node). Running your own hub needs Node 22.13 or newer.

  • A git repository for the project. Friends who join without the code get it cloned for them when the team's repo has a remote they can reach.

  • Claude Code, Codex or Cursor. Mix them freely within a team.

Commands

In Claude Code with the plugin:

/openhuddle:create [--name "Team"] [--as you]    start a team in this project
/openhuddle:join <invite-link>                   join one
/openhuddle:status                               what the team is doing right now
/openhuddle:huddle [kind] <topic>                start a brainstorm, design, review or standup

From any terminal:

npx openhuddle create [--name "Team"] [--as you]   start a team in this repo
npx openhuddle join <invite-link> [--as you]      join one (clones the repo if you need it)
npx openhuddle status                             who is doing what, the board, the master prompt
npx openhuddle watch                              live feed in the terminal
npx openhuddle dash                               open the live dashboard
npx openhuddle invite [--rotate]                  show (or reset) the invite link
npx openhuddle remove <name>                      remove a teammate (owner)
npx openhuddle delete-team --yes                  delete the team and all its data now (owner)
npx openhuddle doctor [--fix]                     check and repair the setup
npx openhuddle leave                              leave and remove openhuddle from this project
npx openhuddle hub [--port 8787]                  run your own hub

Updating

  • Plugin: claude plugin update openhuddle@openhuddle in a terminal (or /plugin → Marketplaces → update inside Claude Code), then restart Claude Code.

  • npx setups: run npx openhuddle@latest doctor --fix in the project. It refreshes the copy in ~/.openhuddle/app that the hooks and tools use. When your team's hub runs a newer version, your agent tells you so.

Uninstall

  • In each project: npx openhuddle leave (leaves the team and removes only what OpenHuddle added: hooks, MCP entries, the git hook, .openhuddle/).

  • Plugin: /plugin uninstall openhuddle.

  • Then delete ~/.openhuddle if you like.

Troubleshooting

Symptom

Fix

Your agent doesn't mention teammates

Run npx openhuddle doctor. With --fix it repairs the wiring. In Claude Code, start a new session after fixing.

"Can't reach the hub"

Check your connection, then curl <hub>/health. Hooks give up after 3 seconds, so your work is never blocked.

"This membership is no longer valid"

You were removed or left. Ask a teammate for a fresh invite (npx openhuddle invite).

Invite link "not valid anymore"

Links expire after 7 days. Any member can print a fresh one with npx openhuddle invite.

Plugin hooks fail with "node: command not found"

Install Node 20+ and make sure node is on the PATH Claude Code sees.

An edit was paused "held by a teammate"

That's the guard working. Ask them (team_ask), wait for the claim to expire, or have the owner set claim_mode to warn.

The public hub

npx openhuddle create uses the free public hub at https://92-5-77-35.sslip.io unless you pass --hub. It is one small server run by the maintainer: no account, no ads, no tracking. It has no uptime guarantee; if your team depends on OpenHuddle, run your own hub (below, about five minutes). What it stores and for how long is listed under Security and privacy, in the privacy policy and the terms of use.

Run your own hub

The hub is the same package.

npx openhuddle hub --port 8787 --public-url https://team.example.com

or, on a fresh Ubuntu 24.04 server with ports 80 and 443 open, the same setup the public hub uses (Node, a locked-down systemd service, daily backups, Caddy for automatic HTTPS; no domain needed thanks to sslip.io):

curl -fsSLO https://raw.githubusercontent.com/nika110/openhuddle/main/deploy/provision-ubuntu.sh
sudo bash provision-ubuntu.sh 203-0-113-7.sslip.io     # your server's IP with dashes

or with Docker:

docker build -t openhuddle https://github.com/nika110/openhuddle.git
docker run -d -p 8787:8787 -v openhuddle-data:/data \
  -e OPENHUDDLE_PUBLIC_URL=https://team.example.com openhuddle

Put it behind HTTPS (Caddy, nginx, a tunnel). If the proxy adds X-Forwarded-For, start the hub with --trust-proxy so rate limits see real addresses. Then create teams against it:

npx openhuddle create --hub https://team.example.com

Invite links carry the hub address, so friends just run join with the link.

Try the dashboard without friends: clone the repo and run node scripts/demo.mjs. It starts a local hub with a demo team and prints the dashboard link.

Security and privacy

  • Teammates' text is data, not instructions. Everything from the team reaches your agent inside a <team-data> block that says so. Your instructions and your tool's safety rules come first.

  • Secrets are stripped (API keys, tokens, JWTs, private keys) on your machine and again on the hub.

  • Fails open. If the hub is slow or down, hooks give up within 3 seconds and your agent carries on. OpenHuddle never auto-approves anything.

  • Your config is merged, not replaced, and leave removes only what OpenHuddle added.

  • A team setup belongs to one machine. A .openhuddle/config.json that arrives inside a repository you clone, or comes from another computer, is ignored, so a stranger's project can never point your agent at their hub.

  • What you see is what was written. Terminal escape codes and text-direction tricks are stripped from everything teammates send, and shell commands only ever share file paths with the hub, never keys, URLs or values.

  • The invite link is the key. Anyone with it can join, so share it like a password. Links expire after 7 days; the owner can reset them and remove members.

  • The hub never sees your code. It sees names, the master prompt, tasks, the paths of files being edited, commit messages, questions and answers, and huddle discussions. Run your own hub if that's too much.

  • Answering teammates stays bounded. Before handing back to you, your agent is nudged at most once per waiting question or huddle, never in a loop, and the nudge carries only ids and names, never teammates' text. Turn it off for yourself with "set auto_respond off".

  • Nothing lingers. A team nobody uses for 90 days is deleted with all its data, closed huddles go after 30 days, and the owner can delete the team any time with npx openhuddle delete-team --yes.

More in SECURITY.md.

FAQ

Does everyone need the same AI tool? No. Mix Claude Code, Codex and Cursor freely.

Does it replace GitHub? No. Code still goes through git and your usual pull requests. OpenHuddle is the live layer on top: who is doing what, right now.

What does it cost? Nothing. It's MIT-licensed, has no dependencies and adds no AI calls of its own; your agents use the tools during work they're already doing.

What happens when someone goes offline? Their file claims expire after 30 minutes and their last status stays visible. If they leave the team, their unfinished tasks go back on the board.

Can my agent go wild with this? The tools only read and write team coordination data. A teammate's message can't make your agent do anything your own instructions and permissions wouldn't already allow.

How is this different from Claude Code's agent teams? Agent teams run several agents for one person on one machine. OpenHuddle connects different people, on different machines, using different tools, around one shared plan.

Do the agents just agree with each other? They're told not to. Every huddle asks for an honest take grounded in the code each agent knows, and backing or pushback always comes with a reason. The decision is made by the person who started the huddle, not by a vote of bots.

Can I use it solo with several agents? Yes. Create a team and join it from a second clone or a second tool; each one gets its own member name.

Is it on the MCP Registry? Yes, as io.github.nika110/openhuddle.

Contributing

Issues and pull requests are welcome. See CONTRIBUTING.md: zero dependencies, plain JavaScript, npm test runs everything.

License

MIT

Available Tools

10 tools
claimA

Reserve files you are about to change so teammates' agents don't edit them at the same time (files you edit are claimed automatically for 30 minutes). check: see whether files are held by someone or sit in a teammate's task area. release: free files you are done with.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathsYesFile paths (relative to the repo or absolute).
actionYesWhat to do.
task_keyNoOptional task the claim belongs to.

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden, and it does disclose two useful traits: edits auto-claim for 30 minutes and claims protect against concurrent teammate agents. It says nothing about what happens on a conflict, whether you can release someone else's claim, or what an error looks like, which are the risky unknowns for a locking tool.

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 tight sentences, front-loaded with the core purpose, then the two secondary modes. Every clause earns its place and there is no filler.

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 tool with no annotations and no output schema, the description covers purpose, all three modes, and the key TTL behavior well enough to invoke it correctly. It stops short of describing check's return meaning (held vs. task-area status is named but not how it is reported) or conflict handling.

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 paths and task_key are already documented, but the action enum is only labeled 'What to do' in the schema. The description compensates by explaining the semantics of each enum value (claim/check/release), which is genuine added meaning rather than repetition.

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 gives concrete verbs and a resource: reserving files so concurrent agents do not collide, plus a check and release mode. It is clear what the tool operates on (file paths in a repo), but it never contrasts itself with siblings like plan or task, leaving the agent to infer where claiming fits in the wider team workflow.

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?

Each action carries an explicit trigger: claim when you are about to change files, check to see whether files are held or sit in a teammate's task area, release when you are done. That is strong when-to-use coverage for all three modes, but no exclusions or alternatives are named (e.g., when not to bother claiming).

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

huddleB

Think together like a real dev team. start: open a huddle, either brainstorm (an open question), design (your proposed approach, for pushback), review (ask teammates to look at a branch, commit or task) or standup (everyone posts done, next, blockers); optionally only with some people. list: open and recently closed huddles. get: read the whole discussion. idea: add an idea. comment: discuss, optionally on one idea. react: back (up) or push back on (down) a teammate's idea, with a reason. close: record what the team decided (whoever started it, or the team owner).

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoHuddle id, e.g. H2 (all actions except start and list).
whyNoclose: the reason, in a sentence or two.
ideaNoreact: the idea number; comment: optional idea number the comment is about.
kindNostart: what kind of huddle.
noteNoreact: your reason.
textNoidea/comment: what you want to say.
voteNoreact: up to back the idea, down to push back.
topicNostart: the question or subject, in one line.
actionYesWhat to do.
peopleNostart: teammates to huddle with. Leave out for the whole team.
contextNostart: background the team needs: constraints, what you tried, the branch or commit to review.
decisionNoclose: what the team settled on.
proposalNostart: your proposed approach (required for design; becomes idea #1).

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It does disclose real traits: close is permission-gated ('whoever started it, or the team owner'), design requires a proposal that becomes idea #1, and react requires a reason. It says nothing about mutability of the read actions, whether closed huddles are immutable, notification effects on teammates, or error behavior when the huddle is not open.

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?

One dense paragraph with zero filler sentences; each clause maps to a distinct action. The opening tagline 'Think together like a real dev team' is atmosphere rather than information, and the action list would read better as separate lines, but the sizing is appropriate for a 7-action, 13-parameter tool.

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 multi-action tool with 13 parameters, no annotations, and no output schema, the description covers every action and several key constraints (permissions on close, required proposal for design). It still leaves return shapes for list/get unexplained and gives no guidance on state requirements, which an agent needs before calling idea/comment/react.

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 every parameter description already carries its action prefix, so the schema does the heavy lifting. The description adds marginal value by narrating how parameters combine per action (design proposal becomes idea #1, react needs vote plus reason), but it repeats rather than extends the schema. 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 concrete resource (huddle) and enumerates all seven actions with a specific verb and object for each (start/list/get/idea/comment/react/close), so an agent can tell what the tool does. It stops short of differentiating itself from siblings like team_post or team_ask, which also appear to handle team communication.

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?

Each action carries an implied usage condition (review = ask teammates to look at a branch/commit/task; standup = everyone posts done/next/blockers; close = record the decision), and 'optionally only with some people' scopes start. However there is no explicit guidance on when to open a huddle versus posting via team_post/team_ask, nor any stated prerequisites such as needing an open huddle for idea/comment/react.

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

master_promptA

The team's shared master prompt: one description of what you are building, co-written by everyone. get: read it. edit: replace or append one section (Idea, Who it is for, Must-haves, Not doing, Tech stack, Look and feel, Done means, Conventions; a new title adds a section). submit: start the team vote. vote: approve or reject the version being voted on. Only edit or vote when your user asks.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoreplace (default) or append (edit).
textNoNew section text (edit).
actionYesWhat to do.
approveNotrue to approve, false to reject (vote).
commentNoOptional note with your vote.
sectionNoSection title (edit).

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does well: it discloses that edit replaces or appends a single section, that a new title creates a section, that submit starts a team vote, and that vote targets the version currently being voted on (an implicit multi-step workflow). It omits permission/ownership requirements and what happens to a version after a vote resolves, but the workflow disclosure is substantive.

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?

Dense and front-loaded: the resource definition comes first, then a compact action-by-action breakdown, then the usage caveat. The section list is a long run-on but each clause maps to a distinct action/parameter, so little 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?

All four enum actions are covered, the edit semantics and section vocabulary are explained, and a usage caveat is present. Since there is no output schema, return values need not be described, and the main remaining gap is the absence of permission/ownership context for a collaborative 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 coverage is 100% with descriptions on every property, so the baseline is 3. The description reinforces the mode semantics (replace default vs append) and enumerates the valid section names (Idea, Who it is for, Must-haves, etc.) and the title-adds-a-section behavior, adding mild value beyond 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?

The description names the resource (the team's shared master prompt) and enumerates all four actions (get/edit/submit/vote) with what each does, so the agent can map each enum value to an outcome. It does not differentiate itself from the sibling team_* tools or explain why this tool rather than team_post/team_reply would be used.

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?

The closing line 'Only edit or vote when your user asks' gives one concrete usage constraint, which is useful. However, there is no guidance on when to prefer get vs submit, when a vote is appropriate, or how this tool relates to the team_* siblings that likely cover adjacent collaboration actions.

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

planA

Turn the locked master prompt into tasks (usually the lead's job) or add tasks later. Contracts first: the first task is always the skeleton (repo setup, shared types and API contracts, database schema, lint/format config) and the other tasks depend on it. Give every task its own folder area and explicit dependencies. create: save a plan (replace=true drops tasks nobody started). add: append tasks. list: show the board.

ParametersJSON Schema
NameRequiredDescriptionDefault
tasksNoTasks to create or add.
actionYesWhat to do.
replaceNocreate only: remove tasks that nobody has started.

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose meaningful behavior: replace=true 'drops tasks nobody started', the skeleton-task-first invariant, and the dependency ordering convention. It does not cover permissions/authority beyond the 'usually the lead's job' hint, error behavior, or what happens to already-started tasks under replace.

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?

Front-loaded with the core purpose, then the workflow rule, then per-action glosses; every sentence does work. It is fairly dense and the 'Contracts first' editorial could be tighter, but nothing is redundant.

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

Completeness5/5

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

There is no output schema and only three parameters at full coverage, so the description's job is to explain the actions, the replace semantics, and the ordering invariant — all of which it does. An agent has enough to select an action and construct a valid tasks payload without further guessing.

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 baseline is 3. The description goes further by explaining the enum semantics in operational terms (create = save a plan, add = append, list = show the board) and by prescribing how the tasks payload should be shaped (own folder area, explicit dependencies), which the schema alone does not convey.

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

Purpose4/5

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

The opening sentence gives a concrete verb+resource ('turn the locked master prompt into tasks') and then enumerates the three modes (create/add/list with plain-language glosses). It is clearly distinguishable from plan-level tooling versus the single-task siblings, but it never names those siblings explicitly, so differentiation is implied rather than stated.

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 supplies real usage context: this is 'usually the lead's job', it is used after the master prompt is locked, and 'add tasks later' is the follow-up case. However, it never states when NOT to use it or points to the alternative tools (task, claim) for single-task edits or claiming work.

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

taskA

Work the task board. list: all tasks. take: claim an open task. accept/decline: answer a task proposed to you. start: begin (only when its dependencies are done). update: post a progress note. done: finish, with a one-line note on what changed for others. release: give it back. assign: give a task to a teammate.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNoTask key, e.g. T3.
noteNoProgress note (update/done).
actionYesWhat to do.
branchNoGit branch (start/done). Defaults to your current branch.
assigneeNoTeammate's name (assign).

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden, and it partially does: it conveys the state transition of each action ('release: give it back', 'done: finish') and the social obligation that done takes a one-line change note. It says nothing about irreversibility of done, permissions, concurrency/race behavior on take, or error handling — significant omissions for a mutation-heavy tool.

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 lead sentence plus a tight action-by-action list; no filler, and the overall scope is front-loaded before the per-action detail.

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 nine-action polymorphic tool with no output schema, the description covers inputs and action semantics but says nothing about what 'list' returns, what keys look like beyond the schema example, or what success/failure responses look like — leaving the agent to guess at outcomes.

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, but the description adds value by mapping actions to parameters (which actions need a key, that note is required for done as 'what changed for others') — a mapping the schema does not make explicit since only 'action' 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?

The description gives a specific verb+resource ('Work the task board') and then enumerates all nine actions with one-line meanings, so an agent knows exactly what each mode does. However it never distinguishes itself from the similarly-named sibling 'claim', which overlaps with the 'take: claim an open task' action — a real ambiguity for tool selection.

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?

Each action carries its own contextual guidance (e.g., 'start: begin (only when its dependencies are done)', 'accept/decline: answer a task proposed to you', 'assign: give a task to a teammate'), which is unusually good routing within the tool. It stops short of saying when to use this tool versus alternatives like 'claim' or 'plan'.

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

team_askA

Ask a teammate's agent a question: what they are doing, whether you may change a file they hold, why they chose something. You get their live status at once; if their agent is active its answer comes back within about 20 seconds, otherwise it arrives later in your team news.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesThe teammate's name.
questionYesYour question.

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose meaningful behavior: an immediate live-status response, a ~20 second synchronous answer when the peer agent is active, and fallback delivery via 'team news' otherwise. It omits whether the call has any side effects (e.g., does it affect the teammate's state or notify them), which is a gap for an inter-agent messaging tool.

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 core action, and the timing/delivery information in the second sentence earns its place. Slightly dense but free of filler.

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 2-parameter tool with no output schema and no annotations, the description supplies the key missing context: the response arrives immediately as live status and the actual answer may be deferred to team news. It could still clarify what the immediate status payload contains.

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 'to' and 'question' are already documented in the schema. The description illustrates the kind of question to supply but adds no format or constraint 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 gives a specific verb (ask) and resource (a teammate's agent) and grounds it with three concrete example questions, so the agent knows the operation is a directed question to a peer agent rather than a broadcast. It does not explicitly name or contrast with siblings like team_post or team_reply, leaving that distinction to inference.

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?

Three example scenarios ('what they are doing', 'whether you may change a file they hold', 'why they chose something') make the intended use case clear, and the async delivery note implies when a synchronous alternative is not needed. However, there is no explicit when-not guidance or named alternative sibling tool.

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

team_postA

Tell your team something in one or two sentences: a progress update (what you finished, what changed for others) or a decision and why. Never include secrets.

ParametersJSON Schema
NameRequiredDescriptionDefault
whyNoFor decisions: the reason.
kindYes"update" for progress, "decision" for a choice the team should know about.
textYesThe message.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose two real behavioral constraints not in the schema: keep it to one or two sentences, and never include secrets. It says nothing about visibility (whole team vs channel), permanence, notification behavior, or whether the post can be edited or retracted — meaningful gaps for a broadcast mutation.

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 compact sentences that front-load the core action and then enumerate the content modes. The secrets warning is a brief imperative with no filler; every clause earns its place.

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 simple three-parameter tool with no output schema and no annotations, the description covers purpose, content kinds, length, and a security constraint. It is nearly sufficient, missing only the downstream effects of posting (visibility, permissions, follow-up via team_reply).

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 all three parameters are already documented in the schema, establishing a baseline of 3. The description loosely reinforces semantics ('a decision and why') but adds no syntax, length, or format detail beyond what the schema fields already state.

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 gives a clear verb+resource — telling the team something — and breaks the action into its two concrete modes (progress update, decision). It stops short of explicitly distinguishing itself from siblings like team_ask or team_sync, so an agent must infer that this is the broadcast/announce tool rather than the question or sync tool.

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?

It implies when to use the tool by enumerating acceptable content (progress update, decision with rationale) and adds a 'Never include secrets' constraint. However, it never states when NOT to use it or names the alternative siblings (team_ask, team_reply, team_sync), so routing between the team_* tools is left to inference.

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

team_replyA

Answer a question a teammate's agent asked you (ids like Q3). Answer truthfully from what you actually did and know; say so when you don't know.

ParametersJSON Schema
NameRequiredDescriptionDefault
answerYesYour answer.
ask_idYesThe question id, e.g. Q3.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It adds genuine guidance about answer content ('answer truthfully... say so when you don't know'), which is unusual and useful. However, it discloses nothing about delivery semantics — whether the asker is notified, whether the reply is durable, or what happens on an invalid ask_id.

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 followed by the behavioral expectation. Every clause earns its place; 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?

For a two-parameter reply tool with no output schema, the description covers what to do and how to answer. The remaining gap is post-reply behavior (notification, persistence), which is minor for this 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 both parameters are already documented. The description reinforces the ask_id format with the 'ids like Q3' example, adding marginal value beyond the schema's own 'e.g. Q3' example. 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 ('Answer a question a teammate's agent asked you'), which is clearly the reciprocal of the sibling team_ask. It does not explicitly name team_ask as the counterpart, but the direction of the action is unambiguous.

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: this is the tool for responding to an inbound question from a teammate's agent. There is no explicit when-not guidance or named alternative (e.g. team_post for broadcasting), so the agent must infer the boundary from the phrasing alone.

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

team_settingsA

Read or change how the team works, when your user asks. Team-wide rules can only be changed by the team owner: assign_mode (self: people pick tasks, agent: the lead assigns, hybrid: the lead proposes and each person accepts), master_prompt_approval (all, majority or owner), claim_mode (ask: pause and ask the user before editing a file a teammate holds, block: refuse, warn: only tell) and claim_ttl_min (how long claims last). Anyone can set lead (who the lead, the main agent, is) and my_strengths (what you are good at, used for assignments). auto_respond is personal: whether your agent answers waiting questions and huddles before it finishes a turn.

ParametersJSON Schema
NameRequiredDescriptionDefault
leadNoTeammate's name to make lead (main agent).
actionYesWhat to do.
claim_modeNoWhat happens when you try to edit a file a teammate holds.
assign_modeNoHow tasks get assigned.
auto_respondNoYours only (Claude Code): before finishing a turn, answer teammates' questions and huddles waiting for you. On by default.
my_strengthsNoWhat you are good at, e.g. "frontend, design".
claim_ttl_minNoMinutes a claim lasts without activity.
master_prompt_approvalNoWho must approve the master prompt.

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose meaningful behavior: owner-only mutation for assign_mode/master_prompt_approval/claim_mode/claim_ttl_min versus unrestricted lead/my_strengths, and a stated default for auto_respond. It does not say what happens on permission failure or whether changes are reversible, so it is not complete.

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 opening sentence is well front-loaded, but everything after it is a single dense paragraph that interleaves permission rules, enum semantics, and personal-scope notes. The content mostly earns its place, yet a bulleted or grouped layout would make it far easier to parse.

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

Completeness5/5

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

For an 8-parameter read/write settings tool with no annotations and no output schema, the description covers the permission model, per-parameter semantics, and defaults, which is enough for an agent to call it correctly. Only the shape of the `get` response is left implicit, a minor gap.

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, but the description genuinely adds meaning beyond the terse schema strings by explaining each enum branch (self/agent/hybrid, ask/block/warn, all/majority/owner) and the unit of claim_ttl_min. It omits guidance on whether parameters are all sent together or merged with existing values.

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 pair and resource ("Read or change how the team works") and enumerates exactly which settings are covered, so an agent can distinguish it from action siblings like team_post, claim, or master_prompt. It does not explicitly name those siblings as alternatives, which keeps it below 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?

Provides a real invocation gate ("when your user asks") and, more usefully, a permission model that tells the agent in advance which settings are owner-only, which anyone can set, and which are personal. It stops short of stating when not to call it or naming an alternative tool for team-wide rule changes.

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

team_syncA

See what your team is doing right now: who is online and on which task, the master prompt's state, your tasks, questions waiting for you, and what changed since you last looked. Call it at the start of a session and before starting new work.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does convey that this is a read-style "see" operation and that it tracks diffs ("what changed since you last looked"), implying stateful/cursor semantics. However it never states the safety profile explicitly (read-only, non-mutating, no side effects) nor output format or paging behavior, leaving meaningful behavioral gaps for an annotation-free tool.

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 what the agent gets back followed by when to call it, with no filler. The content enumeration is somewhat long but each item earns its place by telling the agent what the snapshot contains.

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 and no annotations, the description does the necessary work of enumerating the returned items and the call timing. It is largely complete for a zero-parameter read tool, with only the safety/read-only framing and any size or freshness limits left implicit.

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?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline is 4 per the rubric. The description rightly spends its words on returned content instead of inventing parameter semantics.

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 pair ("See what your team is doing right now") and enumerates the returned surface: presence, current task, master prompt state, your tasks, pending questions, and diffs. This clearly reads as a read-only snapshot, distinguishing it in kind from the action siblings (team_ask, team_post, team_reply), though no sibling is named explicitly.

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 concrete invocation triggers: "Call it at the start of a session and before starting new work." That is clear when-to-use guidance. It stops short of naming alternatives or stating when not to call it, so it does not reach the 5 tier.

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. 2 tool updatesv0.4.0
    • Addedhuddle
    • Changedteam_settings1 field changed
      • addedInput schema / properties / auto_respond
        Added value: +{
        +  "description": "Yours only (Claude Code): before finishing a turn, answer teammates' questions and huddles waiting for you. On by default.",
        +  "type": "boolean"
        +}
  2. 9 tool updatesv0.1.0
    • First observedclaim
    • First observedmaster_prompt
    • First observedplan
    • First observedtask
    • First observedteam_ask
    • First observedteam_post
    • First observedteam_reply
    • First observedteam_settings
    • First observedteam_sync

TDQS

A3.7/5.0

Scored across 10 tools

Disambiguation3/5

The tools mostly map to distinct resources (file claims, huddles, settings, master prompt, plan, tasks, comms), but the communication/update surfaces overlap: team_post (progress/decisions), task.update (progress note) and huddle.comment all serve as places to report status, and team_ask's 'may I change a file they hold' overlaps with claim.check. Descriptions help steer choices but a reasonable agent could still misfile an update.

Naming Consistency3/5

Conventions are mixed: bare verbs/domain nouns (claim, huddle, plan, task), noun-style resource names (team_settings, master_prompt), and a team_ verb prefix for messaging (team_ask, team_post, team_reply, team_sync). The team_ cluster is consistent, but the overall set mixes several patterns.

Tool Count5/5

Ten tools for a full team-coordination domain is well-scoped, and each bundles coherent sub-actions (huddle modes, task lifecycle, master-prompt voting) rather than exploding into dozens of endpoints. No tool feels redundant or thin.

Completeness4/5

Coverage is broad—file locking, discussion, settings, shared prompt, planning, task board and team messaging—so core coordination workflows have no dead ends. Minor gaps remain (no task deletion, leave-team, or notification management), but agents can work around them.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables multiple AI coding agents to collaborate on a project by coordinating tasks, file leases, and messages through a shared hub, preventing conflicts and enabling parallel development.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Connects multiple AI agents (Codex, Claude Code, Grok, etc.) into a coordinated, auditable team with shared memory, task ownership, and human oversight, enabling parallel collaboration without conflicts.
    242
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables multiple AI coding CLIs (Claude Code, Gemini/Antigravity, Codex, and OpenCode) to collaborate as a coordinated team by routing cross-agent prompts, sharing messages and review tickets, tracking tasks on a shared store, and isolating each agent in its own Git worktree with turn-budget safeguards—all inspectable and steerable from a local web dashboard.
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    Enables AI coding agents on different machines and accounts to work one repository as a team by declaring file and symbol claims before editing, so collisions are refused up front rather than discovered at merge. It also supports delegating tasks between teammates' agents, which do the work with their own tokens and commit, with replies, commit shas, claims and messages landing on one shared board.
    20
    2
    MIT