0.8.0npm · gossipcat · latest release
Observed 2026-08-15T20:00:17.563Z using mcpSecurity-inventory. Protocol 2025-06-18.
| Tool | Category | Risk |
|---|---|---|
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.mdInput 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"
]
} | — | — |
Compared with initial baseline using full_baseline.
| Risk | Change | Subject |
|---|---|---|
| No material changes recorded. | ||
| Severity | Finding | Advisory |
|---|---|---|
| No confirmed vulnerability is published for this version. | ||
Artifact SHA-256: 892d50a5235697a970efa3b141c309ca229dddb18e93351669f4bd8d9f4ceaca
Scanner: mcp-proof-engine 0.1.0.