← MCP Security Catalog

gossipcat 0.8.0

npm · gossipcat · latest release

Scan unsupported
Security result
28
Observed tools
57
Version rating
100
Change risk

Independent inventory

Observed 2026-08-15T20:00:17.563Z using mcpSecurity-inventory. Protocol 2025-06-18.

ToolCategoryRisk
gossip_askDashboard bridge ONLY: ask the dashboard chat (identified by chat_id) a structured selection question. The dashboard renders radios (single-select) or checkboxes (multiSelect) plus an optional free-text "Other"; the user's answer comes back to you as a NORMAL channel turn (a later message prefixed "[answer qid=…]"). This is the dashboard-answerable parallel to the terminal-only AskUserQuestion — use it when a <channel source="gossipcat" chat_id="..."> dashboard chat is active. NON-BLOCKING: returns at once; do NOT wait for the answer in this call. Pass the chat_id verbatim. Returns an error (no side effect) when no matching dashboard bridge stream is open.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "chat_id": {
      "type": "string",
      "description": "The chat_id verbatim from the <channel ... chat_id=\"...\"> dashboard message."
    },
    "questions": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "header": {
            "type": "string",
            "description": "Short label for the question (e.g. \"Approach\")."
          },
          "question": {
            "type": "string",
            "description": "The prompt text shown above the options."
          },
          "multiSelect": {
            "description": "true → checkboxes (multiple allowed); false/omitted → radios (one).",
            "type": "boolean"
          },
          "options": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "label": {
                  "type": "string",
                  "description": "The option label the user selects; must be unique within the question."
                },
                "description": {
                  "description": "Optional one-line clarification shown under the label.",
                  "type": "string"
                }
              },
              "required": [
                "label"
              ]
            },
            "description": "Selectable options (≤8)."
          },
          "allowOther": {
            "description": "When true, the dashboard shows a free-text \"Other\" input.",
            "type": "boolean"
          }
        },
        "required": [
          "header",
          "question",
          "options"
        ]
      },
      "description": "1–4 questions, each with ≤8 options."
    }
  },
  "required": [
    "chat_id",
    "questions"
  ]
}
gossip_ask_backRe-engage an agent after a fabrication (hallucination_caught) for first-person root-cause analysis. action:"ask" dispatches an introspection prompt to the agent and logs the event; action:"record" stores the agent's answer. Builds a rich failure ledger (.gossip/fabrication-introspections.jsonl) that feeds skill development.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "action": {
      "default": "ask",
      "description": "\"ask\" (default): dispatch an introspection prompt to the agent. \"record\": store the agent's answer.",
      "type": "string",
      "enum": [
        "ask",
        "record"
      ]
    },
    "agent_id": {
      "type": "string",
      "description": "The agent that produced the fabrication."
    },
    "claim": {
      "description": "Required for action:\"ask\". The fabricated claim the agent made.",
      "type": "string"
    },
    "ground_truth": {
      "description": "Required for action:\"ask\". What the code/evidence actually shows.",
      "type": "string"
    },
    "finding_id": {
      "description": "Optional consensus finding_id (format: <consensus_id>:<agent:fN>) to link the introspection to a specific finding.",
      "type": "string"
    },
    "answer": {
      "description": "Required for action:\"record\". The agent's root-cause explanation.",
      "type": "string"
    }
  },
  "required": [
    "agent_id"
  ]
}
gossip_bug_feedbackFile a GitHub issue on the gossipcat repo from an in-session bug report. Dedupes against open issues. Requires authenticated gh CLI.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "description": {
      "type": "string",
      "minLength": 1,
      "description": "Bug description — what went wrong, what you expected, what happened instead"
    },
    "task_id": {
      "description": "Optional task ID to attach for context",
      "type": "string"
    }
  },
  "required": [
    "description"
  ]
}
gossip_collectCollect results from dispatched tasks. Waits for completion by default. Use consensus: true for cross-review round.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "task_ids": {
      "default": [],
      "description": "Task IDs to collect. Empty array for all.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "timeout_ms": {
      "default": 300000,
      "description": "Max wait time in ms. Default 5 minutes.",
      "type": "number"
    },
    "consensus": {
      "default": false,
      "description": "Enable cross-review consensus. Agents review each others findings.",
      "type": "boolean"
    },
    "resolutionRoots": {
      "description": "Optional user-worktree paths for citation resolution (issue #126). Collect-time overrides dispatch-time.",
      "maxItems": 32,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 4096
      }
    },
    "prompt_format": {
      "default": "inline",
      "description": "Cross-review prompt delivery: \"inline\" embeds ---SYSTEM---/---USER--- blocks; \"elided\" writes each to .gossip/dispatch-prompts/ and omits the PROMPTS section.",
      "type": "string",
      "enum": [
        "inline",
        "elided"
      ]
    }
  }
}
gossip_configManage runtime feature-gate flags stored in .gossip/runtime-flags.json. Actions: list (show all flags + source), get (one flag), set (write flag), unset (remove flag), reload (discard cache after hand-edit).
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "action": {
      "type": "string",
      "enum": [
        "get",
        "set",
        "unset",
        "list",
        "reload"
      ],
      "description": "Action to perform"
    },
    "key": {
      "description": "Flag key (required for get, set, unset). Must start with GOSSIP_.",
      "type": "string"
    },
    "value": {
      "description": "Flag value (required for set).",
      "type": "string"
    },
    "reason": {
      "description": "Reason for change, appended to audit log (required for set, unset).",
      "type": "string",
      "minLength": 1,
      "maxLength": 1024
    }
  },
  "required": [
    "action"
  ]
}
gossip_dispatchDispatch tasks to agents. mode:"single" (default) sends to one agent. mode:"parallel" fans out to multiple agents. mode:"consensus" dispatches with cross-review instructions. Returns task IDs for collecting results. Image attachments: pass `images` (mode:"single") or per-task `images` (parallel/consensus) as local absolute PNG/JPEG paths to send screenshots to vision-capable relay providers (openai/google/anthropic/grok/local) — max 4 images, ≤4 MB each, magic-byte-sniffed. When omitted, absolute PNG/JPEG paths in the task text are auto-attached (up to 4). Text-only providers and native agents ignore the field.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "mode": {
      "default": "single",
      "description": "Dispatch mode: \"single\" (one agent), \"parallel\" (fan-out), \"consensus\" (cross-review)",
      "type": "string",
      "enum": [
        "single",
        "parallel",
        "consensus"
      ]
    },
    "agent_id": {
      "description": "Agent ID — required for mode:\"single\"",
      "type": "string"
    },
    "task": {
      "description": "Task description — required for mode:\"single\"",
      "type": "string"
    },
    "tasks": {
      "description": "Task array — required for mode:\"parallel\" and mode:\"consensus\"",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "agent_id": {
            "type": "string"
          },
          "task": {
            "type": "string"
          },
          "write_mode": {
            "type": "string",
            "enum": [
              "sequential",
              "scoped",
              "worktree"
            ]
          },
          "scope": {
            "type": "string"
          },
          "images": {
            "description": "Local absolute PNG/JPEG paths to attach as images for this task (vision-capable relay providers only). Max 4, ≤4 MB each.",
            "maxItems": 4,
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 4096
            }
          }
        },
        "required": [
          "agent_id",
          "task"
        ]
      }
    },
    "write_mode": {
      "description": "Write mode for single dispatch",
      "type": "string",
      "enum": [
        "sequential",
        "scoped",
        "worktree"
      ]
    },
    "scope": {
      "description": "Directory scope for \"scoped\" write mode",
      "type": "string"
    },
    "images": {
      "description": "mode:\"single\" only. Local absolute PNG/JPEG file paths to attach as images for vision-capable relay providers. Max 4, ≤4 MB each. When omitted, absolute PNG/JPEG paths in the task text are auto-attached (up to 4).",
      "maxItems": 4,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 4096
      }
    },
    "timeout_ms": {
      "description": "Write task timeout in ms. Default 300000.",
      "type": "number"
    },
    "plan_id": {
      "description": "Plan ID from gossip_plan. Enables chain context from prior steps.",
      "type": "string"
    },
    "step": {
      "description": "Step number in the plan (1-indexed).",
      "type": "number"
    },
    "_utility_task_id": {
      "description": "Internal: utility task ID for re-entry after native lens generation",
      "type": "string"
    },
    "resolutionRoots": {
      "description": "Optional worktree paths for citation resolution (issue #126).",
      "maxItems": 32,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 4096
      }
    },
    "prompt_format": {
      "default": "inline",
      "description": "Prompt delivery mode for native dispatches: \"inline\" (default, AGENT_PROMPT content item) or \"elided\" (write to .gossip/dispatch-prompts/<taskId>.txt; orchestrator Reads + forwards).",
      "type": "string",
      "enum": [
        "inline",
        "elided"
      ]
    }
  }
}
gossip_formatReturn the canonical CONSENSUS_OUTPUT_FORMAT block. Use this when you need to write an ad-hoc Agent() prompt for a native subagent that should produce findings the consensus engine can parse. Paste the returned string into your prompt verbatim — the format trains the agent to emit <agent_finding> tags instead of prose.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {}
}
gossip_guideShow the gossipcat handbook for humans — architectural invariants, operator playbook, caveats, hallucination patterns, glossary. Call this when you want to READ the docs, not when you need LLM context. The LLM-facing auto-load lives in gossip_status().
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {}
}
gossip_planPlan a task with write-mode suggestions. Decomposes into sub-tasks, assigns agents, and classifies each as read or write with suggested write mode. Returns dispatch-ready JSON for approval before execution. Use this before gossip_dispatch(mode:"parallel") for implementation tasks.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "task": {
      "type": "string",
      "description": "Task description (e.g. \"fix the scope validation bug in packages/tools/\")"
    },
    "strategy": {
      "description": "Override decomposition strategy. Omit to let the orchestrator decide.",
      "type": "string",
      "enum": [
        "parallel",
        "sequential",
        "single"
      ]
    },
    "_utility_task_id": {
      "description": "Internal: utility task ID for re-entry after native decomposition",
      "type": "string"
    }
  },
  "required": [
    "task"
  ]
}
gossip_progressShow progress of active tasks and consensus rounds. Call during long-running operations to see what agents are doing.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {}
}
gossip_relayFeed a native agent result back into the gossipcat relay. Call this after a Claude Code Agent() completes a task dispatched via gossip_dispatch or gossip_run. Enables consensus cross-review and gossip for native agents.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "task_id": {
      "type": "string",
      "description": "Task ID returned by gossip_dispatch or gossip_run"
    },
    "result": {
      "type": "string",
      "description": "The agent output/result text"
    },
    "error": {
      "description": "Error message if the agent failed",
      "type": "string"
    },
    "agent_started_at": {
      "description": "Timestamp (ms) when Agent() was launched. Used to measure actual agent execution time vs dispatch overhead.",
      "type": "number"
    },
    "relay_token": {
      "description": "One-time token issued at dispatch time. Required for native agent relays — prevents task-ID spoofing.",
      "type": "string"
    }
  },
  "required": [
    "task_id",
    "result"
  ]
}
gossip_relay_cross_reviewFeed native agent cross-review result back into a pending consensus round. Called after dispatching Agent() for cross-review.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "consensus_id": {
      "type": "string",
      "description": "The consensus_id from the gossip_collect response"
    },
    "agent_id": {
      "type": "string",
      "description": "The agent that performed the cross-review"
    },
    "result": {
      "type": "string",
      "description": "The agent cross-review output (JSON array of agree/disagree/unverified/new entries)"
    }
  },
  "required": [
    "consensus_id",
    "agent_id",
    "result"
  ]
}
gossip_reloadTerminate the MCP server process so Claude Code respawns it with a fresh bundle. Use after 'npm run build:mcp' to hot-reload without quitting Claude Code. Returns a notice, then exits 100ms later.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {}
}
gossip_rememberSearch an agent's archived knowledge files, or manage the memory sidecar index.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "agent_id": {
      "type": "string",
      "description": "Agent ID to search knowledge for"
    },
    "query": {
      "type": "string",
      "maxLength": 500,
      "description": "Search query (max 500 chars)"
    },
    "max_results": {
      "default": 3,
      "description": "Max results (default 3, max 10)",
      "type": "integer",
      "minimum": 1,
      "maximum": 10
    },
    "action": {
      "default": "search",
      "description": "Action: \"search\" (default) to query knowledge; \"rebuild_index\" for a full BM25 sidecar rebuild; \"rebuild_md\" to regenerate MEMORY.md from the index.",
      "type": "string",
      "enum": [
        "search",
        "rebuild_index",
        "rebuild_md"
      ]
    }
  },
  "required": [
    "agent_id",
    "query"
  ]
}
gossip_resolve_findingsWalk open findings in .gossip/implementation-findings.jsonl and auto-resolve any whose cited code has been fixed (cited identifier absent from the touched file after comment stripping). Conservative — multi-cite AND, file-scoped not range-scoped, structural insight-tag exclusion. Writes a hash-chained audit entry per resolution to .gossip/finding-resolutions.jsonl and advances the watermark. Pass full:true to bypass the watermark and rescan everything.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "full": {
      "description": "When true, ignore .gossip/last-resolve-scan.sha and re-scan every reachable commit (manual full-tree sweep). Default false.",
      "type": "boolean"
    },
    "sinceSha": {
      "description": "Override watermark: scan commits since this SHA. Mutually exclusive with `full`.",
      "type": "string"
    }
  }
}
gossip_runRun a task on a single agent and return the result. For relay agents (Gemini), this is a single call — dispatches, waits, returns. For native agents (Sonnet/Haiku), returns dispatch instructions with gossip_relay callback. Use agent_id:"auto" to let the orchestrator decompose and assign agents automatically.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "agent_id": {
      "type": "string",
      "description": "Agent to run the task on, or \"auto\" for orchestrator-driven decomposition"
    },
    "task": {
      "type": "string",
      "description": "Task description. Reference file paths — the agent will read them."
    },
    "write_mode": {
      "description": "Write mode for implementation tasks",
      "type": "string",
      "enum": [
        "sequential",
        "scoped",
        "worktree"
      ]
    },
    "scope": {
      "description": "Directory scope for scoped write mode",
      "type": "string"
    },
    "prompt_format": {
      "default": "inline",
      "description": "Native-dispatch prompt delivery: \"inline\" (default) or \"elided\" (write to .gossip/dispatch-prompts/<taskId>.txt).",
      "type": "string",
      "enum": [
        "inline",
        "elided"
      ]
    }
  },
  "required": [
    "agent_id",
    "task"
  ]
}
gossip_scoresView agent performance scores from consensus signals. Shows accuracy, uniqueness, reliability, and dispatch weight for each agent. Use to understand which agents are performing well and which need improvement.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {}
}
gossip_session_saveSave a cognitive session summary to project memory. The next session will load this context automatically on MCP connect. Call before ending your session to preserve what was learned.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "notes": {
      "description": "Optional freeform user context (e.g., \"focusing on security hardening\")",
      "type": "string"
    },
    "force": {
      "description": "Bypass the refuse-gate for pending native tasks / consensus rounds. Audited to .gossip/forced-saves.jsonl.",
      "type": "boolean"
    },
    "_utility_task_id": {
      "description": "Internal: utility task ID for re-entry after native session summary",
      "type": "string"
    }
  }
}
gossip_setupCreate or update gossipcat team. Default mode is "merge" — adds/updates specified agents while keeping existing ones. Use "replace" to overwrite entire config. Detects host environment (unknown) and supports both native Claude Code subagents (.claude/agents/*.md) and custom provider agents (Anthropic, OpenAI, Google Gemini).
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "main_provider": {
      "default": "google",
      "description": "Provider for the orchestrator LLM. Use \"none\" when no API key is available — features degrade gracefully to profile-based. Note: \"native\" is not valid here (use it only for utility_model or per-agent overrides).",
      "type": "string",
      "enum": [
        "anthropic",
        "openai",
        "deepseek",
        "grok",
        "openclaw",
        "google",
        "local",
        "none"
      ]
    },
    "main_model": {
      "default": "gemini-2.5-pro",
      "description": "Model ID for orchestrator (e.g. gemini-2.5-pro, claude-sonnet-4-6, gpt-4o)",
      "type": "string"
    },
    "mode": {
      "default": "merge",
      "description": "\"merge\" (default) keeps existing agents and adds/updates the ones specified. \"replace\" overwrites entire config. \"update_instructions\" updates agent instructions without touching the config.",
      "type": "string",
      "enum": [
        "merge",
        "replace",
        "update_instructions"
      ]
    },
    "instruction_agent_ids": {
      "description": "Agent IDs for instruction update",
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      ]
    },
    "instruction_update": {
      "description": "Instruction text to append/replace",
      "type": "string"
    },
    "instruction_mode": {
      "description": "How to apply instruction update",
      "type": "string",
      "enum": [
        "append",
        "replace"
      ]
    },
    "mirror_hooks": {
      "default": false,
      "description": "Opt-in (default false): install the activity-mirror hooks (UserPromptSubmit/Stop/PostToolUse) into .claude/settings.local.json so the live CC session is mirrored into the dashboard. OFF by default because these hooks mirror tool I/O externally — only enable after verifying the relay + dashboard render are ready.",
      "type": "boolean"
    },
    "agents": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]*$",
            "description": "Agent ID (lowercase, hyphens). e.g. \"claude-reviewer\", \"gemini-impl\""
          },
          "type": {
            "type": "string",
            "enum": [
              "native",
              "custom"
            ],
            "description": "\"native\" = Claude Code subagent (.claude/agents/*.md), uses Anthropic API on the relay. \"custom\" = any provider (anthropic/openai/google/local)"
          },
          "model": {
            "description": "For native agents: Claude model tier",
            "type": "string",
            "enum": [
              "opus",
              "sonnet",
              "haiku",
              "fable"
            ]
          },
          "description": {
            "description": "For native agents: one-line description for the .claude/agents/*.md frontmatter",
            "type": "string"
          },
          "instructions": {
            "description": "For native agents: full instructions (markdown body of .claude/agents/*.md)",
            "type": "string"
          },
          "provider": {
            "description": "For custom agents: LLM provider",
            "type": "string",
            "enum": [
              "anthropic",
              "openai",
              "deepseek",
              "grok",
              "openclaw",
              "google",
              "local"
            ]
          },
          "custom_model": {
            "description": "For custom agents: model ID (e.g. gemini-2.5-pro, gpt-4o, claude-sonnet-4-6)",
            "type": "string"
          },
          "base_url": {
            "description": "Custom base URL for OpenAI-compatible gateways. For openai: defaults to https://api.openai.com/v1. For openclaw: defaults to http://127.0.0.1:18789/v1.",
            "type": "string"
          },
          "role": {
            "description": "Agent role — freeform, e.g. \"ui-architect\", \"security-auditor\", \"reviewer\"",
            "type": "string"
          },
          "skills": {
            "description": "Skill tags (e.g. [\"typescript\", \"code_review\"])",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "maxToolTurns": {
            "description": "Per-agent tool-turn budget override (integer in [1, 100]). Defaults to 15 when omitted. Useful for slow-reasoning agents (e.g. deepseek-reasoner) that need more turns per cross-review. NOTE: re-declaring an existing agent replaces its whole config entry (even in merge mode) — omitting this field on a re-declare resets the agent to the default.",
            "type": "integer",
            "minimum": 1,
            "maximum": 100
          }
        },
        "required": [
          "id",
          "type"
        ]
      },
      "description": "Array of agents to create"
    }
  },
  "required": [
    "agents"
  ]
}
gossip_signalsRecord or retract consensus performance signals. Use action "record" (default) to record signals after cross-referencing agent findings — call IMMEDIATELY when you verify. Use action "retract" to undo a previously recorded signal.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "action": {
      "default": "record",
      "description": "Action: \"record\" to add signals, \"retract\" to undo a previous signal or an entire consensus round, \"bulk_from_consensus\" to auto-record signals for all findings in a consensus report, \"resolve\" to mark an open finding as fixed-by-commit (NOT a retraction — agent score is untouched), \"unresolve\" to revert a bad auto-resolve back to open status",
      "type": "string",
      "enum": [
        "record",
        "retract",
        "bulk_from_consensus",
        "resolve",
        "unresolve"
      ]
    },
    "consensus_id": {
      "description": "Consensus report ID (8-8 hex format, e.g. \"5e8a7194-73e240da\"). Required for action: \"bulk_from_consensus\". For action: \"retract\" — supplying this (with `reason`) retracts ALL signals in that consensus round; mutually exclusive with agent_id+task_id per-signal retraction.",
      "type": "string",
      "pattern": "^[0-9a-f]{8}-[0-9a-f]{8}$"
    },
    "task_id": {
      "description": "Task ID to link signals to. For record: optional (synthetic ID if omitted). For per-signal retract: required.",
      "type": "string"
    },
    "task_start_time": {
      "description": "ISO-8601 timestamp of the underlying task/consensus round. Used as the per-batch fallback timestamp so bulk-recording from a backlog preserves true chronology. Falls back to wall-clock if omitted.",
      "type": "string"
    },
    "signals": {
      "description": "Array of consensus signals (required for action: \"record\")",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "signal": {
            "type": "string",
            "enum": [
              "agreement",
              "disagreement",
              "unique_confirmed",
              "unique_unconfirmed",
              "new_finding",
              "hallucination_caught",
              "impl_test_pass",
              "impl_test_fail",
              "impl_peer_approved",
              "impl_peer_rejected",
              "operational_lesson",
              "design_split"
            ],
            "description": "Signal type: agreement (both agree), disagreement (one wrong), unique_confirmed (only one found it + verified), unique_unconfirmed (only one found it, unverified), new_finding (discovered during cross-review), hallucination_caught (fabricated finding), impl_test_pass/fail (write-mode task outcome), impl_peer_approved/rejected (peer code review verdict), operational_lesson (operator-authored PROCESS failure — no consensus round; requires finding_id \"session:<sessionId>:<slug>\" and a non-empty lesson; never affects accuracy scoring), design_split (two agents reached OPPOSED but DEFENSIBLE conclusions on a trade-off that reading code cannot settle — records BOTH sides and scores NEITHER. counterpart_id is REQUIRED; `finding` must state BOTH positions, not just one; category is optional. Accepts either finding_id shape, so a split from a parallel non-consensus dispatch can use \"session:<sessionId>:<slug>\". Use this INSTEAD of disagreement whenever no side has been shown wrong — \"disagreement\" means \"one wrong\" and debits accuracy. RESOLUTION IS A SEPARATE, LATER SIGNAL: if one side is subsequently shown wrong, record a normal scoring disagreement/hallucination_caught against the SAME finding_id; the split row stays as the audit trail of what was unresolved at the time)"
          },
          "agent_id": {
            "type": "string",
            "description": "Agent being evaluated"
          },
          "counterpart_id": {
            "description": "The other agent involved (e.g., who won the disagreement)",
            "type": "string"
          },
          "finding": {
            "type": "string",
            "description": "Brief description of the finding"
          },
          "lesson": {
            "description": "Root-cause narrative for a terminal correction signal — 1-2 sentences on why it failed and the check that would have caught it. Written verbatim into the discovering agent's lesson card (issue #642 A).",
            "type": "string"
          },
          "finding_id": {
            "description": "Finding ID. Two accepted shapes: (a) consensus-scoped \"<8hex>-<8hex>:<agent>:fN\" — links this signal to a specific finding in a consensus report, enabling the dashboard to resolve UNVERIFIED findings; (b) session-scoped \"session:<sessionId>:<slug>\" — REQUIRED for signal \"operational_lesson\", OPTIONAL for \"design_split\" (which accepts either shape, so splits from parallel non-consensus dispatches need no synthetic consensus id), and rejected on every other signal. Both <sessionId> and <slug> must be safe path segments; a path-unsafe value is rejected, never sanitized.",
            "type": "string"
          },
          "cross_cutting": {
            "description": "Explicit opt-in (no heuristic), VALID ONLY on signal \"operational_lesson\": file this signal's lesson card in the shared .gossip/agents/_project/memory/knowledge/ instead of the recording agent's own knowledge dir. Use for lessons every contributor needs (e.g. \"a dist-mcp bundle built inside a git worktree is always broken\"). Ignored (with a log line) on consensus verdict signals such as hallucination_caught — those are per-agent findings and must not be published as shared blame cards. The signal row itself stays attributed to agent_id; only the card moves, and it records origin_agent in frontmatter.",
            "type": "boolean"
          },
          "severity": {
            "description": "Finding severity for impact scoring. If omitted, defaults to medium.",
            "type": "string",
            "enum": [
              "critical",
              "high",
              "medium",
              "low"
            ]
          },
          "category": {
            "description": "Finding category for ATI competency profiles (e.g., concurrency, trust_boundaries, injection_vectors, resource_exhaustion, type_safety, error_handling, data_integrity, input_validation)",
            "type": "string"
          },
          "evidence": {
            "description": "Supporting evidence or reasoning",
            "type": "string"
          },
          "timestamp": {
            "description": "ISO-8601 timestamp of when this specific finding occurred. Highest precedence; overrides task_start_time. Use for per-finding chronology when known.",
            "type": "string"
          }
        },
        "required": [
          "signal",
          "agent_id",
          "finding"
        ]
      }
    },
    "agent_id": {
      "description": "Agent whose signal to retract (required for per-signal action: \"retract\"; mutually exclusive with consensus_id round-scope form)",
      "type": "string"
    },
    "reason": {
      "description": "Why this signal/round is being retracted, manually resolved, or unresolved (required for action: \"retract\", action: \"unresolve\", and resolved_by:\"manual\"; 1-1024 chars)",
      "type": "string",
      "minLength": 1,
      "maxLength": 1024
    },
    "retracted_signal": {
      "description": "For per-signal action: \"retract\" — the specific signal TYPE to void (e.g. \"hallucination_caught\"). When supplied (with finding_id), the reader scopes the retraction to that one signal; when omitted, ALL signals for the agent+task are voided (wildcard, back-compat).",
      "type": "string"
    },
    "finding_id": {
      "description": "Finding ID for action: \"resolve\" or \"unresolve\". Format <consensus_id>:<agent>:fN.",
      "type": "string"
    },
    "resolved_by": {
      "description": "How the finding was resolved (required for action: \"resolve\"). One of: \"commit:<sha>\" (auto-resolved by code change), \"stale_anchor\" (cited line no longer exists), \"manual\" (operator explicitly marked it fixed; requires reason).",
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "stale_anchor",
            "manual"
          ]
        },
        {
          "type": "string",
          "pattern": "^commit:[0-9a-f]{7,40}$"
        }
      ]
    },
    "operator": {
      "description": "Orchestrator ID recorded in the audit log for manual resolutions. Defaults to \"manual\" when omitted.",
      "type": "string"
    }
  }
}
gossip_skill_queryFetch the full markdown of ONE of your bound skills that was not injected into this dispatch. The prompt lists fetchable names under "Skills available on demand". Read-only — never binds or changes your skill set.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "agent_id": {
      "type": "string",
      "description": "Your own agent ID (from the Identity block in your prompt)"
    },
    "skill": {
      "type": "string",
      "maxLength": 256,
      "description": "Exact skill name, e.g. \"trust-boundaries\". Underscores and casing are normalized."
    }
  },
  "required": [
    "agent_id",
    "skill"
  ]
}
gossip_skillsManage agent skills. Actions: list (show skill index), get (return a skill's raw markdown by name), bind (attach skill to agent), unbind (remove skill from agent), build (create skills from gap suggestions), develop (generate skill from ATI competency data), prune (drop skill-index entries for agents no longer in config.json).
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "action": {
      "type": "string",
      "enum": [
        "list",
        "get",
        "bind",
        "unbind",
        "build",
        "develop",
        "prune"
      ],
      "description": "Action to perform"
    },
    "agent_id": {
      "description": "Agent ID (required for bind, unbind, develop; optional for get — when given, checks that agent's local skills dir first)",
      "type": "string"
    },
    "skill": {
      "description": "Skill name (required for bind, unbind, get)",
      "type": "string"
    },
    "enabled": {
      "description": "For bind: set to false to disable the slot without removing it. Defaults to true.",
      "type": "boolean"
    },
    "category": {
      "description": "Category to improve (required for develop). One of: trust_boundaries, injection_vectors, input_validation, concurrency, resource_exhaustion, type_safety, error_handling, data_integrity",
      "type": "string"
    },
    "skill_names": {
      "description": "For build: filter to specific skills. Omit to get all pending.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "skills": {
      "description": "For build: generated skill files to save. Omit for discovery mode.",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Skill name (kebab-case)"
          },
          "content": {
            "type": "string",
            "description": "Full .md content with frontmatter"
          }
        },
        "required": [
          "name",
          "content"
        ]
      }
    },
    "_utility_task_id": {
      "description": "Internal: utility task ID for re-entry after native skill generation",
      "type": "string"
    },
    "force": {
      "description": "Bypass the skill-develop cooldown gate. Audited to .gossip/forced-skill-develops.jsonl.",
      "type": "boolean"
    }
  },
  "required": [
    "action"
  ]
}
gossip_statusCheck Gossip Mesh system status, host environment, available agents, dashboard URL/key, and agent list with provider/model/skills. Pass slim:true to skip the handbook inline (~21KB savings) on reconnect refreshes.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "slim": {
      "description": "When true, omit the ## Project Handbook inline section to save ~21KB on reconnect refreshes where the orchestrator already has the handbook in working memory. Default false.",
      "type": "boolean"
    }
  }
}
gossip_toolsList all available gossipcat MCP tools with descriptions. Call after /mcp reconnect to discover new tools.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {}
}
gossip_updateCheck for or apply gossipcat updates. Detects install method (global npm, local dep, git clone) and fetches the latest version from the npm registry.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "check_only": {
      "default": false,
      "description": "Only check version, do not update",
      "type": "boolean"
    },
    "confirm": {
      "default": false,
      "description": "Set true to actually apply the update",
      "type": "boolean"
    }
  }
}
gossip_verify_memoryOn-demand staleness check for a memory file claim. Reads the memory file, dispatches a native haiku-researcher utility to verify the claim against current code, and returns a structured verdict (FRESH | STALE | CONTRADICTED | INCONCLUSIVE) with file:line evidence. Call before acting on any backlog item from memory. Spec: docs/specs/2026-04-08-gossip-verify-memory.md
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "memory_path": {
      "type": "string",
      "description": "Path to memory file (relative to cwd or absolute). Absolute paths must resolve inside cwd or under ~/.claude/projects/."
    },
    "claim": {
      "type": "string",
      "description": "The specific memory assertion to verify against current code."
    },
    "_utility_task_id": {
      "description": "Internal: utility task ID for re-entry after native haiku dispatch",
      "type": "string"
    }
  },
  "required": [
    "memory_path",
    "claim"
  ]
}
gossip_watchPull signals recorded since a cursor timestamp. Returns {events, next_cursor, count, truncated}. Stateless; pass next_cursor back on subsequent calls. Max 24h lookback, max 500 events per call.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "cursor": {
      "description": "ISO-8601 timestamp. Returns signals with timestamp > cursor. Omit or pass old value to start from 24h ago.",
      "type": "string"
    },
    "max_events": {
      "description": "Cap events returned (default 500).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 500
    }
  }
}
replyDashboard bridge ONLY: send a conversational reply to the dashboard chat stream identified by chat_id. Use this — and ONLY this — to respond to a <channel source="gossipcat" chat_id="..."> dashboard message; your transcript output never reaches the dashboard. Pass the chat_id through verbatim. This is NOT gossip_relay: it does not close native-subagent tasks. Returns an error (no side effect) when no matching dashboard bridge stream is open.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "chat_id": {
      "type": "string",
      "description": "The chat_id verbatim from the <channel ... chat_id=\"...\"> dashboard message."
    },
    "text": {
      "type": "string",
      "description": "The reply text to stream to the dashboard."
    }
  },
  "required": [
    "chat_id",
    "text"
  ]
}

Resources 0

Resource templates 0

Prompts 0

Changes from previous version

Compared with initial baseline using full_baseline.

RiskChangeSubject
No material changes recorded.

Confirmed vulnerabilities

SeverityFindingAdvisory
No confirmed vulnerability is published for this version.

Provenance

Artifact SHA-256: 892d50a5235697a970efa3b141c309ca229dddb18e93351669f4bd8d9f4ceaca

Scanner: mcp-proof-engine 0.1.0.

Let’s talk about MCP security.

Share your details and our security team will contact you.