Skip to main content
Glama
@ola/buzz-mcp

@ola/buzz-mcp

Official
by ola-krutrim

buzz_dm_add

Idempotent

Adds a person to an existing DM conversation so they can join and view its prior history. Use it to bring another participant into a thread you are already in.

Instructions

Add a person to an existing DM conversation you're in (kind 41011; at most 9 people total). They can see its prior history, so in wire / post-as-me mode the first add of the session needs confirm: true.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "channel": "<channel>",
      "user": "<user>"
    },
    "name": "buzz_dm_add"
  }
}

Input Schema

NameRequiredDescriptionDefault
userYesnpub / hex pubkey / email / exact display name
channelYesthe DM's channel id (from buzz_dm_list)
confirmNoset true to confirm a destructive action (asked once per session per kind in wire / post-as-me mode)
dry_runNopreview only: resolve everything and show the exact event that would be signed (auth tags redacted) — nothing is signed, uploaded or sent

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.2.36

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare non-read-only, open-world and idempotent, so the remaining burden is small; the description still adds real substance by disclosing that the added person can see prior history and that a one-time-per-session confirm gate exists in wire / post-as-me mode. There is a mild friction with destructiveHint=false while the confirm parameter is described as confirming 'a destructive action', but the description itself never claims data is destroyed, so this is a schema/annotation nuance rather than a description contradiction.

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?

A single tightly written sentence, front-loaded with the verb and resource, with the capacity limit and the confirm condition trailing as qualifying clauses. It is dense but every clause carries operational information; only the 'kind 41011' internals read as protocol detail an agent rarely needs.

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 mutation tool with no output schema, the description covers the essentials an agent needs: eligibility (must already be in the DM), capacity limit, side effect (history exposure) and the confirm gate. It does not say what happens on edge cases such as the target already being a member or the conversation already being at nine people, 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.

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 explaining why confirm exists and precisely when it fires (first add of the session, wire / post-as-me mode only), which the schema does not convey. It leaves dry_run semantics entirely to the schema, but that parameter is already well documented there.

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 ('Add a person to an existing DM conversation') and immediately scopes it to DMs the agent is already in, which cleanly separates it from buzz_dm_open (start a new DM) and buzz_dm_send (post into one). The parenthetical '(kind 41011; at most 9 people total)' adds the event kind and a hard capacity bound, so an agent knows exactly which operation this is.

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 clear triggering context: the conversation must already exist and the caller must be a member, with a 9-person ceiling that tells the agent when the tool will not apply. It also states the confirm:true prerequisite for wire / post-as-me mode. It stops short of explicitly naming buzz_dm_open as the alternative for creating a DM, so the routing is implied rather than spelled out.

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