{"server":{"name":"io.github.eidetic-works/nucleus","$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","remotes":[{"url":"https://relay.nucleusos.dev/mcp","type":"streamable-http"}],"version":"1.15.2","packages":[{"version":"1.15.2","transport":{"type":"stdio"},"identifier":"nucleus-mcp","runtimeHint":"uvx","registryType":"pypi","environmentVariables":[{"name":"NUCLEUS_BRAIN_PATH","format":"string","description":"Path to .brain/ directory (defaults to .brain in current directory)"}]}],"repository":{"url":"https://github.com/eidetic-works/nucleus-mcp","source":"github"},"websiteUrl":"https://nucleusos.dev","description":"Sovereign Agent OS — Persistent Memory, Governance & Compliance for AI Agents."},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","isLatest":true,"updatedAt":"2026-07-19T03:38:39.881555Z","publishedAt":"2026-07-19T03:38:39.881555Z","statusChangedAt":"2026-07-19T03:38:39.881555Z"},"dev.protogrid/connectability":{"class":"R0","autonomous":true,"human_steps":[],"preferred":{"kind":"remote","idx":0},"remotes":[{"idx":0,"url":"https://relay.nucleusos.dev/mcp","transport":"streamable-http","templated":false,"headers":[],"auth":{"type":"none","location":null,"secret_name":null,"oauth":null},"protocol":{"supported_versions":["2025-11-25"],"stateless":false},"health":{"reachable":true,"uptime_30d":0.9826087,"latency_ms_p50":1053,"consecutive_failures":0,"last_probe_at":"2026-10-19T14:41:23.665Z","last_ok_at":"2026-10-19T14:41:23.665Z"}}],"packages":[{"idx":0,"registry_type":"pypi","identifier":"nucleus-mcp","version":"1.15.2","runtime_hint":"uvx","transport":"stdio","secrets":[],"requires_execution":true}]},"dev.protogrid/tools":[{"name":"nucleus_agents","title":"Agent Spawning","description":"Agent spawning, critic, swarm, memory, ingestion & dashboard tools.\n\nActions:\n  spawn_agent          - Spawn Ephemeral Agent. params: {intent, execute_now?, persona?, confirm?}. HITL: requires confirm=true.\n  apply_critique       - Apply critique fixes. params: {review_path}\n  orchestrate_swarm    - Start multi-agent swarm. params: {mission, agents?}\n  search_memory        - Search long-term memory. params: {query}\n  read_memory          - Read memory category. params: {category}\n  respond_to_consent   - Respond to respawn consent. params: {agent_id, choice?}\n  list_pending_consents - List agents awaiting consent\n  critique_code        - Run Critic review. params: {file_path, context?}\n  fix_code             - Auto-fix code. params: {file_path, issues_context}\n  session_briefing     - Get session briefing. params: {conversation_id?}\n  register_session     - Register session focus. params: {conversation_id, focus_area, role?, tier?, charter_path?, parent_session?}. Tier ∈ {opus,sonnet,haiku}; role must start with tier prefix.\n  handoff_task         - Hand off task. params: {task_description, target_session_id?, priority?}\n  ingest_tasks         - Ingest tasks. params: {source, source_type?, session_id?, auto_assign?, skip_dedup?, dry_run?}\n  rollback_ingestion   - Rollback ingestion. params: {batch_id, reason?}\n  ingestion_stats      - Get ingestion statistics\n  dashboard            - Enhanced dashboard. params: {detail_level?, format?, include_alerts?, include_trends?, category?}\n  snapshot_dashboard   - Create dashboard snapshot. params: {name?}\n  list_dashboard_snapshots - List snapshots. params: {limit?}\n  get_alerts           - Get active alerts\n  set_alert_threshold  - Set alert threshold. params: {metric, level, value}","annotations":{"readOnlyHint":false,"openWorldHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T14:41:23.665Z"},{"name":"nucleus_audit","title":"Audit Log","description":"W8 Team-tier tamper-evident audit log (SHA-256 hash chain).\n\nActions:\n  log_event   - Append an audit event to the chain.\n                params: {event_type, actor, resource, outcome, metadata?, team_id?, ts?}\n  query       - Single-tenant query. Rejects team_id='*'.\n                params: {team_id, since?, until?, actor?, event_type?, limit?, offset?}\n  admin_query - Cross-tenant query (team_id='*' allowed). Requires\n                NUCLEUS_AUDIT_ADMIN_TOKEN env match. Logs every successful\n                call to the synthetic '__admin__' chain.\n                params: {admin_token, team_id?, since?, until?, actor?, event_type?, limit?, offset?}\n  verify      - Verify SHA-256 chain integrity for a team.\n                params: {team_id}","annotations":{"readOnlyHint":true,"openWorldHint":false,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T14:41:23.665Z"},{"name":"nucleus_ccr_arm","title":"CCR Arm","description":"One-shot convenience: resolve canonical inbox + arm long-poll subscription.\n\nPer PR #2 (CCR server-side auto-arm) — IDE-agnostic relay-arrival arming.\n\nThis is the RECOMMENDED entry point for SessionStart auto-arming across all\nMCP clients (Claude Code, Antigravity, Cursor, Windsurf, etc.). Equivalent to:\n    1. resolve_canonical_inbox_name(role) → canonical inbox name\n    2. nucleus_relay_subscribe(inbox_filter=<canonical>, timeout_seconds=...)\n\nWhy this exists vs nucleus_relay_subscribe + inbox_filter:\n    nucleus_relay_subscribe + inbox_filter requires the caller to KNOW the\n    canonical inbox name for their role. nucleus_ccr_arm hides that step.\n    Agent just calls nucleus_ccr_arm() with no args; server detects role from\n    CC_SESSION_ROLE / NUCLEUS_SESSION_ROLE env OR detect_session_role().","annotations":{"readOnlyHint":false,"openWorldHint":false,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T14:41:23.665Z"},{"name":"nucleus_delegate","title":"Cross-Vendor Delegate","description":"Hand a coding or review task to a cross-vendor lane — a cheap, non-Claude\nagent that does the work for you. Use this INSTEAD OF shelling out to any CLI: it\npicks the vendor, injects the correct per-vendor permission flags, captures all\noutput synchronously, and reports a real status. Do NOT run `agy`/`devin`\nyourself in Bash — the raw CLIs take DIFFERENT per-vendor flags (pass the wrong\none and a build silently makes ZERO edits yet exits 0), and hand-driven\nbackground calls flush output late (a finished call looks empty for tens of\nseconds). This tool is the only robust path.\n\nFirst call `list` — it needs no setup, confirms cross-vendor is enabled, and\nshows each vendor's selectable_models + default_model. If dispatch/review return\na disabled error, cross-vendor is OFF: run `nucleus onboard` once (one-time),\nthen retry.\n\nActions:\n  dispatch - Hand a task to a cross-vendor lane.\n      params: {vendor, prompt, artifact_ref, mode?, model?, expect_paths?, to?}\n      REQUIRED: vendor ∈ 'agy'|'devin', prompt, artifact_ref.\n      mode ∈ 'write'|'read' (default 'write'):\n        write = the vendor CHANGES things (edit files, run commands, build/fix).\n        read  = the vendor only LOOKS and REPORTS (analyze/summarize); no file changes.\n        When unsure use 'write': a read task still works in write mode, but a write\n        task silently does NOTHING in read mode.\n      model? — optional. Defaults to the vendor's verified model\n        (agy → gemini-3.1-pro-high, devin → glm-5.2). These are ALREADY the\n        defaults, so omitting model is sufficient; pass it only to be explicit or\n        to override. The response echoes model_id — read model_id (NOT model_family)\n        to confirm which model ran. A cross-wired model (e.g. glm-5.2 with agy) is\n        rejected with the valid ids named.\n      artifact_ref — a commit SHA / PR# / file path to bind the result to. No commit\n        yet (a from-scratch build)? Pass the repo-relative path you will write,\n        e.g. src/foo.py.\n      expect_paths? — optional list of file paths you expect the vendor to change.\n        If you pass them and the vendor changes none, status comes back NOT success\n        (\"no_files_touched\") even if it narrated success. Without expect_paths,\n        success means only that the vendor produced output — not that it edited\n        anything, so ALWAYS confirm with your own `git diff`. (Paths are checked in\n        the nucleus server process's working dir; pass paths valid there.)\n      You never pass CLI flags — the tool injects the right permissions per vendor.\n      Example (build): action=\"dispatch\", params={\"vendor\":\"devin\",\"prompt\":\"<task>\",\n        \"artifact_ref\":\"src/foo.py\",\"mode\":\"write\",\"model\":\"glm-5.2\",\n        \"expect_paths\":[\"src/foo.py\"]}\n  review - Independent, different-model verdict on pasted code / a diff.\n      params: {content, ref?, vendor?, model?, to?}\n      content REQUIRED (paste the code/diff inline). Default vendor agy (Gemini,\n      model gemini-3.1-pro-high) — a genuinely different model from the devin/GLM\n      builder, so the review is diverse. Read-only, edits nothing. Returns a terse\n      two-line verdict. For a devin/GLM second opinion pass vendor='devin'.\n      Example: action=\"review\", params={\"content\":\"<code or diff>\",\n        \"model\":\"gemini-3.1-pro-high\"}\n  list - Show vendors, their selectable_models + default_model, the mode vocabulary,\n      and whether cross-vendor is enabled. Needs no setup — call it first.\n\nA green result is a hypothesis until you verify it on your own shell (zero-trust).\nRead the response's `status` and `success`: 'ok' = produced output; 'empty_output'\n/ 'no_files_touched' / 'timed_out' / 'error' come back success=false — NOT done.\n(If NUCLEUS_ENVELOPE is on, gate on the INNER success flag, not the envelope's ok.)\n\nTwo caveats from real use:\n- SECRET HYGIENE: vendor OUTPUT is best-effort secret-redacted (Bearer/JWT/API-key\n  patterns -> <REDACTED>; the count is in the response `redacted` field). This is a\n  BACKSTOP, not a guarantee — never put credentials in a prompt, and the tool CANNOT\n  scrub a file the vendor writes itself, so review any vendor file-writes near secrets\n  yourself before trusting them.\n- REVIEW SEES ONLY WHAT YOU PASTE: 'review' (and 'dispatch') cannot read the repo, a\n  diff, or any file — they judge only the text in your params. Paste the real code/diff\n  or the reviewer will confidently critique things it cannot see. For a whole PR, paste\n  the actual diff, not a description of it.","annotations":{"readOnlyHint":false,"openWorldHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T14:41:23.665Z"},{"name":"nucleus_engrams","title":"Memory & Engrams","description":"Engrams, health, observability, DSoR & tier system tools.\n\nActions:\n  health              - Get system health status\n  version             - Get Nucleus version info\n  export_schema       - Export MCP toolset as JSON Schema\n  performance_metrics - Get perf metrics. params: {export_to_file?}\n  prometheus_metrics  - Get Prometheus metrics. params: {format?}\n  audit_log           - View cryptographic interaction log. params: {limit?}\n  write_engram        - Write engram to memory. params: {key, value, context?, intensity?}. context: Feature|Architecture|Brand|Strategy|Decision. intensity: 1-10. (alias: \"add\")\n  query_engrams       - Query engrams. params: {context?, min_intensity?, limit?}. limit default 50, max 500.\n  search_engrams      - Search engrams. params: {query, case_sensitive?, limit?}. limit default 50, max 500. (alias: \"search\")\n  governance_status   - Get governance status\n  morning_brief       - Daily Nucleus Morning Brief\n  hook_metrics        - Monitor auto-write engram hooks\n  compounding_status  - Compounding Loop status\n  end_of_day          - Capture EOD learnings. params: {summary, key_decisions?, blockers?}\n  session_inject      - Session-start context injection\n  weekly_consolidate  - Weekly consolidation. params: {dry_run?}\n  list_decisions      - List DecisionMade events. params: {limit?}\n  list_snapshots      - List context snapshots. params: {limit?}\n  metering_summary    - Token metering summary. params: {since_hours?}\n  ipc_tokens          - List IPC auth tokens. params: {active_only?}\n  dsor_status         - Comprehensive DSoR status\n  pulse_and_polish    - God Combo: automated health check pipeline. params: {write_engram?}. Runs prometheus→audit→brief→engram.\n  self_healing_sre    - God Combo: SRE diagnosis pipeline. params: {symptom, write_engram?}. Runs search→metrics→diagnose→recommend.\n  fusion_reactor      - God Combo: self-reinforcing memory loop. params: {observation, context?, intensity?, write_engrams?}. Compounds knowledge.\n  context_graph       - Build engram relationship graph. params: {include_edges?, min_intensity?}. Returns nodes, edges, clusters.\n  engram_neighbors    - Get neighborhood of an engram. params: {key, max_depth?}. BFS traversal of context graph.\n  billing_summary     - Usage cost tracking from audit logs. params: {since_hours?, group_by?}. group_by: tool|tier|session.\n  render_graph        - ASCII visualization of engram context graph. params: {max_nodes?, min_intensity?}.\n  federation_dsor     - Federation DSoR status\n  routing_decisions   - Query routing decision history. params: {limit?}\n  list_tools          - List tools at current tier. params: {category?}\n  tier_status         - Get tier configuration status\n  dsor_query_decisions- Query the DSoR decision ledger. params: {limit?}\n  dsor_get_trace      - Get full provenance trace for a decision. params: {decision_id}\n  heartbeat_check     - Proactive context-triggered check-in. params: {notify?, brain_path?}. Checks stale blockers/decisions, velocity drops, session gaps.\n  heartbeat_status    - Get heartbeat daemon installation status. params: {brain_path?}. Shows install state + recent check history.","annotations":{"readOnlyHint":false,"openWorldHint":false,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T14:41:23.665Z"},{"name":"nucleus_features","title":"Feature Flags","description":"Feature tracking, proof generation & MCP server mounting.\n\nActions:\n  add             - Add a feature. params: {product, name, description, source, version, how_to_test, expected_result, status?, tags?}\n  list            - List features. params: {product?, status?, tag?}\n  get             - Get feature by ID. params: {feature_id}\n  update          - Update feature fields. params: {feature_id, status?, description?, version?}\n  validate        - Mark feature validated. params: {feature_id, result}\n  search          - Search features. params: {query}\n  mount_server    - Mount external MCP server. params: {name, command, args?}\n  thanos_snap     - Trigger Instance Fractal Aggregation\n  unmount_server  - Unmount MCP server. params: {server_id}\n  list_mounted    - List mounted MCP servers\n  discover_tools  - Discover tools from mounted servers. params: {server_id?}\n  invoke_tool     - Invoke tool on mounted server. params: {server_id, tool_name, arguments?}\n  traverse_mount  - Recursively mount downstream servers. params: {root_mount_id}\n  generate_proof  - Generate proof document. params: {feature_id, thinking?, deployed_url?, files_changed?, risk_level?, rollback_time?}\n  get_proof       - Get proof for a feature. params: {feature_id}\n  list_proofs     - List all proof documents","annotations":{"readOnlyHint":false,"openWorldHint":false,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T14:41:23.665Z"},{"name":"nucleus_federation","title":"Federation","description":"Federation management for multi-brain coordination.\n\nActions:\n  status  - Get comprehensive federation status\n  join    - Join a federation via seed peer. params: {seed_peer}\n  leave   - Leave the federation gracefully\n  peers   - List all federation peers with details\n  sync    - Force immediate synchronization with all peers\n  route   - Route a task to the optimal brain. params: {task_id, profile?}\n  health  - Get federation health dashboard","annotations":{"readOnlyHint":false,"openWorldHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T14:41:23.665Z"},{"name":"nucleus_governance","title":"Governance","description":"Governance, Hypervisor & security tools for the Nucleus Agent OS.\n\nActions:\n  auto_fix_loop   - Auto-fix loop: Verify->Diagnose->Fix->Verify (3 retries). params: {file_path, verification_command}\n  lock            - [HYPERVISOR] Lock a file/dir immutable (chflags uchg). params: {path}\n  unlock          - [HYPERVISOR] Unlock a file/dir. params: {path}\n  set_mode        - [HYPERVISOR] Switch IDE context: \"red\" or \"blue\". params: {mode}\n  list_directory  - [GOVERNANCE] List files in a directory. params: {path}\n  delete_file     - [GOVERNANCE] Delete a file (governed by Hypervisor). params: {path, confirm?}. HITL: requires confirm=true.\n  watch           - [HYPERVISOR] Monitor a file/folder for changes. params: {path}\n  status          - [HYPERVISOR] Report current security state of Agent OS\n  curl            - [EGRESS] Proxied HTTP fetch for air-gapped agents. params: {url, method?}\n  pip_install     - [EGRESS] Proxied pip install for air-gapped agents. params: {package}\n  validate_strategic_plan - [PROTOCOL] Validate Strategic mode PLAN has Big Bang [BB##] refs. params: {plan_text, mode?}\n  comply_list     - [COMPLIANCE] List available regulatory jurisdictions\n  comply_apply    - [COMPLIANCE] Apply jurisdiction config. params: {jurisdiction, brain_path?}\n  comply_report   - [COMPLIANCE] Generate compliance status report. params: {brain_path?}\n  audit_report    - [COMPLIANCE] Generate audit-ready report. params: {report_format?, since_hours?, brain_path?}\n  kyc_review      - [COMPLIANCE] Run KYC demo review. params: {application_id?, brain_path?}\n  sovereign_status - [STATUS] Get sovereignty posture report. params: {brain_path?}\n  trace_list      - [DSoR] List decision traces. params: {trace_type?, brain_path?}\n  trace_view      - [DSoR] View specific trace. params: {trace_id, brain_path?}","annotations":{"readOnlyHint":false,"openWorldHint":false,"destructiveHint":true},"source":"probe","observed_at":"2026-10-19T14:41:23.665Z"},{"name":"nucleus_infra","title":"Infrastructure","description":"Infrastructure: file changes, cloud, marketing & strategy tools.\n\nActions:\n  file_changes        - Get pending file change events\n  gcloud_status       - Check GCloud auth status\n  gcloud_services     - List Cloud Run services. params: {project?, region?}\n  list_services       - List Render.com services\n  scan_marketing_log  - Scan marketing log for failures\n  synthesize_strategy - Analyze marketing & update strategy. params: {focus_topic?}\n  status_report       - Generate State of the Union. params: {focus?}\n  optimize_workflow   - Self-optimize workflow cheatsheet\n  manage_strategy     - Read/Update strategy doc. params: {action, content?}\n  update_roadmap      - Read/Update roadmap. params: {action, item?}\n  growth_pulse        - Full growth pipeline: brief→metrics→streak→compound. params: {write_engrams?}\n  capture_metrics     - Refresh GitHub+PyPI metrics + gate evaluation. params: {write_engram?}","annotations":{"readOnlyHint":false,"openWorldHint":true,"destructiveHint":true},"source":"probe","observed_at":"2026-10-19T14:41:23.665Z"},{"name":"nucleus_lane_feedback","title":null,"description":"Report friction/bugs/enhancements to the nucleus team. WHEN TO USE: when the lane misbehaves, a task fails unexpectedly, the SPEC.md format is confusing, or you have an improvement idea. Creates a GitHub issue on the public nucleus-mcp repo (cross-machine visible) AND stores locally. Requires gh CLI auth'd.","annotations":null,"source":"probe","observed_at":"2026-10-19T14:41:23.665Z"},{"name":"nucleus_lane_init","title":null,"description":"Set up an autonomous task-execution loop in a git repo. WHEN TO USE: you have a list of tasks (bugs, features, tests) you want executed automatically without manual prompting — the lane runs watcher/executor/secretary daemons that claim tasks, invoke an LLM to implement them, and independently verify the results. Use this when you want to batch-execute a backlog of well-defined tasks. Creates .brain/, SPEC.md template, and pins via git tag.","annotations":null,"source":"probe","observed_at":"2026-10-19T14:41:23.665Z"},{"name":"nucleus_lane_start","title":null,"description":"Start autonomous lane daemons (watcher + executor + secretary) in background. WHEN TO USE: after nucleus_lane_init and SPEC.md is written — this launches the loop that autonomously claims and executes tasks. The executor invokes an LLM CLI (devin/agy) per task; the secretary independently verifies each result. Runs until nucleus_lane_stop is called.","annotations":null,"source":"probe","observed_at":"2026-10-19T14:41:23.665Z"},{"name":"nucleus_lane_status","title":null,"description":"Check lane status: task counts (PENDING/IN_PROGRESS/DONE/CONFIRMED), daemon health, spec verification. WHEN TO USE: after starting a lane to monitor progress, or before starting to check if a lane is already running.","annotations":null,"source":"probe","observed_at":"2026-10-19T14:41:23.665Z"},{"name":"nucleus_lane_stop","title":null,"description":"Stop all running lane daemons. WHEN TO USE: when all tasks are CONFIRMED or you want to pause autonomous execution.","annotations":null,"source":"probe","observed_at":"2026-10-19T14:41:23.665Z"},{"name":"nucleus_next_message","title":"Next Message","description":"Get the next unread relay message. One call — returns full message\nbody and auto-acks. Long-poll (60s timeout).\n\nThis is the agent's idle loop. Call it, get a message or None, act or\nre-call. No separate inbox + ack dance.\n\nThe agent's loop:\n  1. nucleus_next_message() → blocks up to 60s for a message\n  2. If message: handle it (execute task, respond to comment, etc.)\n  3. Re-call nucleus_next_message() — always re-arm, never sit idle\n  4. Never stop the loop\n\nRole is auto-detected from posture (.brain/posture/current.json).\nNo args needed.\n\nReturns:\n  dict with:\n    message: full relay message (id, from, subject, body, priority, task_id) or None\n    acked: True if message was auto-acked\n    waited_seconds: how long the poll ran","annotations":{"readOnlyHint":false,"openWorldHint":false,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T14:41:23.665Z"},{"name":"nucleus_orchestration","title":"Orchestration","description":"Satellite view, commitments, loops, patterns & metrics.\n\nActions:\n  satellite         - Unified satellite view. params: {detail_level?}\n  scan_commitments  - Scan artifacts for new commitments\n  archive_stale     - Auto-archive commitments older than 30 days\n  export            - Export brain to zip\n  list_commitments  - List open commitments. params: {tier?}\n  close_commitment  - Close a commitment. params: {commitment_id, method}\n  commitment_health - Get commitment health summary\n  open_loops        - View all open loops. params: {type_filter?, tier_filter?}\n  add_loop          - Add a new open loop. params: {description, loop_type?, priority?}\n  weekly_challenge  - Manage weekly challenge. params: {action?, challenge_id?}\n  patterns          - Manage learned patterns. params: {action?}\n  metrics           - Get coordination metrics\n  pr_watch          - Enumerate stale PRs (>N days), classify (auto-mergeable / billing-stuck / needs-verdict),\n                       fire one relay per stale PR to the integration coord. params: {threshold_days?, dry_run?}","annotations":{"readOnlyHint":false,"openWorldHint":false,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T14:41:23.665Z"},{"name":"nucleus_plan_execute","title":null,"description":"Execute a plan file autonomously. WHEN TO USE: you have a plan file (.brain/plans/*.md) you want executed autonomously — parses the plan, creates tasks, starts a mission with budget/time limits. Chains import_plan_as_tasks() then _brain_start_mission_impl() and returns the mission status string.","annotations":null,"source":"probe","observed_at":"2026-10-19T14:41:23.665Z"},{"name":"nucleus_plan_import","title":null,"description":"Import a plan file as PENDING tasks without starting a mission. WHEN TO USE: you have a plan file (.brain/plans/*.md) you want loaded into the task store so the executor daemon / sprint mission can pick the tasks up later — but you don't want to start a mission right now.","annotations":null,"source":"probe","observed_at":"2026-10-19T14:41:23.665Z"},{"name":"nucleus_plan_list","title":null,"description":"List available plan files in .brain/plans with task counts. WHEN TO USE: you want to discover which plan files exist and how many tasks each contains before importing or executing one.\n\nReturns:\n    JSON string: a list of dicts each with\n    ``{\"name\", \"path\", \"size_bytes\", \"task_count\", \"format\"}``.\n    Missing directory returns ``[]``.","annotations":null,"source":"probe","observed_at":"2026-10-19T14:41:23.665Z"},{"name":"nucleus_relay","title":"Relay Messaging","description":"Relay-substrate facade — post / read / ack / status.\n\nActions:\n  post    - Send a relay envelope. params: {to, subject, body, sender?,\n            priority?, in_reply_to?, context?, id?, from_session_id?}\n            sender? auto-fills from your session role when omitted.\n            to accepts short role aliases: main, peer, tb, ops, agy, board.\n            \"recipient\" is accepted as an alias for \"to\".\n            Returns {sent: bool, id: str (server message_id), error?: str}.\n  inbox   - List inbox messages. params: {role?, unread_only?, limit?}\n            role auto-fills from CC_SESSION_ROLE env.\n            Returns {messages: [...], role: str}.\n  ack     - Mark messages seen. params: {message_ids: [str], role?}\n            Returns {acked: int, failed: int}.\n  status  - Diagnostic (no server call). params: {role?}\n            Returns {is_http_mode, relay_url_set, bearer_set, canonical_role,\n            resolved_inbox_dir}.\n\nBearer resolves per-role at call-time (~/.tb/relay_token_<role>, falling back\nto NUCLEUS_RELAY_BEARER env) — never passed via this tool's prompt surface.\nPer ADR-0036 amendment c068abc1 + v0.2.1 Layer A.","annotations":{"readOnlyHint":false,"openWorldHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T14:41:23.665Z"},{"name":"nucleus_relay_subscribe","title":"Relay Subscription","description":"Long-poll subscription that pushes ctx.info() on each new inbox file.\n\nReplaces bash polling daemons (watch-relay-*.sh) with server-initiated push.\nCall once at session start (e.g. via SessionStart hook). Server holds the\nsubscription, watches the calling agent's role-specific inbox dir, and\nfires info-level notifications on each new relay file arrival. Client\nre-calls this in a loop for persistent coverage.\n\nPer PR #1 (CCR-inversion-for-relay-pickup): `inbox_filter` parameter added\nto BYPASS role-based dir resolution. Use when role detection is unreliable\nOR when subscribing to a specific canonical inbox (e.g., 'cc_tb').\nCloses 3-week-old feedback_relay_arrival_invisible_midsession HARD RULE.","annotations":{"readOnlyHint":true,"openWorldHint":false,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T14:41:23.665Z"},{"name":"nucleus_route","title":"Cost Router","description":"W5 tier routing — route a prompt to the optimal model tier.\n\nActions:\n  route  - Route a prompt to cheapest capable model.\n           params: {prompt, complexity?, context?, estimated_output_tokens?}\n           complexity ∈ 'routine' | 'complex' | 'sovereign' (default 'routine')\n           Returns: provider, model, cost estimates, sovereignty tier.","annotations":{"readOnlyHint":true,"openWorldHint":false,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T14:41:23.665Z"},{"name":"nucleus_sessions","title":"Session Management","description":"Session management, events, state & checkpoint tools.\n\nActions:\n  save             - Save session for later. params: {context, active_task?, pending_decisions?, breadcrumbs?, next_steps?}\n  resume           - Resume a saved session. params: {session_id?}\n  list             - List all saved sessions\n  check_recent     - Check for recent session to resume (alias: \"current\")\n  end              - End work session. params: {summary?, learnings?, mood?}\n  start            - Mandatory session start protocol\n  archive_resolved - Archive .resolved.* backup files\n  propose_merges   - Detect redundant artifacts, generate merge proposals\n  garbage_collect  - Archive stale tasks. params: {max_age_hours?, dry_run?}\n  emit_event       - Emit event to brain ledger. params: {event_type, emitter, data, description?}\n  read_events      - Read recent events. params: {limit?}\n  get_state        - Get brain state. params: {path?}\n  update_state     - Update brain state. params: {updates}\n  checkpoint       - Save task checkpoint. params: {task_id, step?, progress_percent?, context?, artifacts?, resumable?}\n  resume_checkpoint - Resume from checkpoint. params: {task_id}\n  handoff_summary  - Generate handoff summary. params: {task_id, summary, key_decisions?, handoff_notes?}\n  ingest_conversations - Ingest Claude Code JSONL transcripts. params: {mode?: \"incremental\"|\"batch\"|\"single\", session_id?, limit?, dry_run?}\n  search_conversations - Search ingested conversations. params: {query, limit?, session_id?, date_from?, date_to?}\n  list_conversations   - List ingested sessions. params: {limit?, offset?, sort?: \"recent\"|\"size\"|\"turns\"}\n  conversation_stats   - Aggregate conversation corpus statistics\n  register         - [T3.11] Register agent session envelope. params: {session_id, agent, role, provider, worktree_path?, pid?, heartbeat_interval_s?, role_credential?} (role_credential required when NUCLEUS_ROLE_CREDENTIAL=1 — see stone-1.5)\n  heartbeat        - [T3.11] Touch last_heartbeat on an envelope. params: {session_id}\n  unregister       - [T3.11] Delete a session envelope. params: {session_id}\n  list_agents      - [T3.11] List registered agent envelopes. params: {worktree_path?, role?, alive_only?}\n  detect_splits    - [T3.11] Report (worktree, role) buckets with >1 alive session. params: {worktree_path?}","annotations":{"readOnlyHint":false,"openWorldHint":false,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T14:41:23.665Z"},{"name":"nucleus_slots","title":"Slots & Sprints","description":"Orchestration slots, sprints & mission management.\n\nActions:\n  orchestrate        - THE GOD COMMAND. params: {slot_id?, model?, alias?, mode?}\n  slot_complete      - Mark task complete. params: {slot_id, task_id, outcome?, notes?}\n  slot_exhaust       - Mark slot exhausted. params: {slot_id, reset_hours?}\n  status_dashboard   - ASCII dashboard. params: {detail_level?}\n  autopilot_sprint   - Sprint command. params: {slots?, mode?, halt_on_blocker?, halt_on_tier_mismatch?, max_tasks_per_slot?, budget_limit?, dry_run?}\n  force_assign       - Force assign task. params: {slot_id, task_id, acknowledge_risk?}\n  autopilot_sprint_v2 - Enhanced sprint V3.1. params: {slots?, mode?, halt_on_blocker?, halt_on_tier_mismatch?, max_tasks_per_slot?, budget_limit?, time_limit_hours?, dry_run?}\n  start_mission      - Start mission. params: {name, goal, task_ids, slot_ids?, budget_limit?, time_limit_hours?, success_criteria?}\n  mission_status     - Get mission status. params: {mission_id?}\n  halt_sprint        - Halt sprint. params: {reason?}\n  resume_sprint      - Resume sprint. params: {sprint_id?}","annotations":{"readOnlyHint":false,"openWorldHint":false,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T14:41:23.665Z"},{"name":"nucleus_sync","title":"Cross-Agent Sync","description":"Sync, artifact, trigger & deploy management for multi-agent coordination.\n\nActions:\n  identify_agent   - Register agent identity. params: {role, provider, session_id} (per ADR-0005 §D1)\n                     OR legacy {agent_id, environment, role?} (coerced per §D5 until end of Cycle C+2)\n  sync_status      - Check current multi-agent sync status\n  sync_now         - Manually trigger sync. params: {force?}\n  sync_auto        - Enable/disable file watching. params: {enable}\n  sync_resolve     - Resolve a file conflict. params: {file_path, strategy?}\n  read_artifact    - Read an artifact file. params: {path}\n  write_artifact   - Write to an artifact file. params: {path, content}\n  list_artifacts   - List artifacts. params: {folder?}\n  trigger_agent    - Trigger an agent via event. params: {agent, task_description, context_files?}\n  get_triggers     - Get all defined neural triggers\n  evaluate_triggers - Evaluate triggers for an event. params: {event_type, emitter}\n  start_deploy_poll - Start monitoring a Render deploy. params: {service_id, commit_sha?}\n  check_deploy     - Check deploy poll status. params: {service_id}\n  complete_deploy  - Mark deploy complete. params: {service_id, success, deploy_url?, error?, run_smoke_test?}\n  smoke_test       - Run a smoke test. params: {url, endpoint?}\n  shared_read      - Read shared state. params: {key}\n  shared_write     - Write shared state. params: {key, value, agent_id?}\n  shared_list      - List all shared state keys\n  notify           - Send notification to all channels. params: {title, message, level?}\n  list_channels    - List configured notification channels\n  add_channel      - Add a channel. params: {channel_type, webhook_url?}\n  test_channel     - Test a channel. params: {channel_name?}\n  relay_post       - Post message to another session type (Cowork↔Claude Code). params: {to, subject, body, priority?, context?, sender?, to_session_id?, from_session_id?, in_reply_to?, task_id?}\n  relay_inbox      - Read messages for current session type. params: {unread_only?, limit?, recipient?, session_id?, task_id?}\n  task_comment_add - Post a task-scoped comment (coordination during task execution). params: {task_id, message, sender, subject?, priority?, in_reply_to?}\n  task_comment_list - List all comments for a task. params: {task_id, limit?}\n  declare_posture - Declare agent role + approach (pending operator approval). params: {role, approach?, agent_id?, delegation_targets?}\n  approve_posture - Approve the declared posture (operator only). params: {approved_by?}\n  get_posture    - Get current posture. params: {}\n  clear_posture  - Clear current posture. params: {}\n  relay_ack        - Mark a relay message as read. params: {message_id, recipient?, session_id?}\n  relay_status     - Get relay mailbox status across all session types\n  relay_clear      - Clean up old relay messages. params: {recipient?, older_than_hours?}\n  relay_log_event  - Log a fire/skip event. params: {event, side, subject, tags?, match_reason?, priority?, message_id?, in_reply_to?}\n  relay_skip_review - List recent unclassified skips. params: {limit?}\n  relay_classify_skip - Classify a skip event. params: {ts, subject, classification, note?}\n  relay_event_stats - Compute override + skip rates from event_log.jsonl\n  marketplace_search - Search registered capability cards. params: {tags?, min_tier?, limit?}\n  marketplace_whoami - Get caller's address, tier, reputation. params: {role?}\n  marketplace_can_call - Pre-flight permission check. params: {caller, target}\n  marketplace_recommend - Recommend agents by task description. params: {task, top_k?}\n  marketplace_dashboard - Aggregated health snapshot. params: {}\n  marketplace_history  - Reputation event timeline for an address. params: {address, limit?}\n  marketplace_promote  - Admin: manually set address tier. params: {address, new_tier, caller?}\n  marketplace_quarantine - Admin: flag address quarantined. params: {address, caller?, reason?}\n  marketplace_audit    - Replay admin_actions.jsonl with filters. params: {caller?, target?, action_type?, since_timestamp?, limit?, offset?}\n  marketplace_compare  - Head-to-head comparison of two addresses. params: {a, b}\n  marketplace_trends  - Tier distribution trend over N days. params: {days?}\n  marketplace_alert   - Subscribe to alert rules. params: {subscriber, target, event_types?}\n  marketplace_export   - Full registry snapshot (read-only). params: {}\n  marketplace_diff     - Diff two registry snapshots. params: {snapshot_a, snapshot_b}\n  marketplace_subscribe - Subscribe to tier-change events. params: {subscriber, target?, event_types?}\n  marketplace_unsubscribe - Remove subscription. params: {subscriber, target?}\n  marketplace_subscriptions - List subscriptions. params: {subscriber?}\n  marketplace_federation_proxy - Proxy an action to a remote federation brain. params: {target_brain, action, payload?}\n  marketplace_federation_register - Register local brain as a federated capability card. params: {address, capabilities?, display_name?, tags?}\n  marketplace_federation_sync - Force federation sync and reconcile marketplace registry. params: {}","annotations":{"readOnlyHint":false,"openWorldHint":false,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T14:41:23.665Z"},{"name":"nucleus_tasks","title":"Task Management","description":"Task management, depth tracking & ADHD context-switch tools.\n\nActions:\n  list              - List tasks. params: {status?, priority?, skill?, claimed_by?, required_role?}\n  get_next          - Get highest-priority unblocked task. params: {skills, required_role?}\n  claim             - Atomically claim a task. params: {task_id, agent_id}\n  update            - Update task fields. params: {task_id, updates}\n  add               - Create a new task. params: {description, priority?, blocked_by?, required_skills?, source?, task_id?, skip_dep_check?, required_role?, plan_ref?} (alias: \"create\")\n  import_jsonl      - Import tasks from JSONL. params: {jsonl_path, clear_existing?, merge_gtm_metadata?}\n  escalate          - Escalate task for human help. params: {task_id, reason}\n  depth_push        - Go deeper into subtopic. params: {topic}\n  depth_pop         - Come back up one level\n  depth_show        - Show current depth state\n  depth_reset       - Reset depth to root\n  depth_set_max     - Set max safe depth. params: {max_depth}\n  depth_map         - Generate exploration map\n  context_switch    - Record context switch / ADHD drift check. params: {new_context}\n  context_switch_status - Get context switch metrics\n  context_switch_reset  - Reset context switch counter","annotations":{"readOnlyHint":false,"openWorldHint":false,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T14:41:23.665Z"},{"name":"nucleus_telemetry","title":"Telemetry","description":"LLM tiers, telemetry, PEFS notifications & protocol tools.\n\nActions:\n  set_llm_tier         - Set default LLM tier. params: {tier}\n  get_llm_status       - Get LLM tier configuration\n  record_interaction   - Record user interaction timestamp\n  value_ratio          - Get Value Ratio metric\n  check_kill_switch    - Check Kill Switch status\n  pause_notifications  - Pause PEFS notifications\n  resume_notifications - Resume PEFS notifications\n  record_feedback      - Record notification feedback. params: {notification_type, score}\n  mark_high_impact     - Mark loop closure as high-impact\n  check_protocol       - Check protocol compliance. params: {agent_id}\n  request_handoff      - Request agent handoff. params: {to_agent, context, request, priority?, artifacts?}\n  get_handoffs         - Get pending handoffs. params: {agent_id?}\n  agent_cost_dashboard - Get agent cost tracking dashboard\n  dispatch_metrics     - Get dispatch telemetry (per-action timing, error rates)\n  rate_limit_status    - Get dispatch rate limiter status (calls per facade, window)","annotations":{"readOnlyHint":false,"openWorldHint":false,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T14:41:23.665Z"},{"name":"nucleus_wakeup_wait","title":"Task Wakeup Wait","description":"Quick scan for a PENDING task. Returns the task directly if one is\navailable, or None if no task is ready within the timeout.\n\nDefault timeout is 5s (non-blocking). The agent should NOT loop on\nthis — tasks arrive via relay push. This is a fallback for when the\nagent wants to check for tasks without waiting for a relay.\n\nNo args needed — the role is auto-detected from posture\n(.brain/posture/current.json) or NUCLEUS_AGENT_ROLES env var.","annotations":{"readOnlyHint":false,"openWorldHint":false,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T14:41:23.665Z"}],"dev.protogrid/trust":{"score":90,"components":{"hygiene":100,"liveness":99,"freshness":65,"provenance":90},"drivers":["+repository","+namespace-matches-repo","+website","+reachable","+uptime-98%","~updated-92d-ago"],"flags":[],"blocked":false,"computed_at":"2026-10-19T15:15:45.394Z","disclaimer":"Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed."},"dev.protogrid/quality":{"score":80,"label":"good","components":{"auth":null,"hygiene":64,"protocol":75,"stability":100,"dependencies":100},"checks":[{"id":"protocol.modern","detail":"newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28","status":"warn","category":"protocol"},{"id":"protocol.stateless","detail":"only applies to 2026-07-28 servers","status":"na","category":"protocol"},{"id":"protocol.transport","detail":"streamable HTTP","status":"pass","category":"protocol"},{"id":"protocol.list_ttl","detail":"only applies to 2026-07-28 servers","status":"na","category":"protocol"},{"id":"auth.prm","detail":"no remote uses OAuth","status":"na","category":"auth"},{"id":"auth.as_metadata","detail":"no remote uses OAuth","status":"na","category":"auth"},{"id":"auth.cimd","detail":"no remote uses OAuth","status":"na","category":"auth"},{"id":"auth.secret_in_url","detail":"no templated URL","status":"na","category":"auth"},{"id":"tools.descriptions","detail":"every tool has a description","status":"pass","category":"hygiene"},{"id":"tools.description_length","detail":"12 tools have descriptions over 1,024 characters, which crowds the context","status":"warn","category":"hygiene"},{"id":"tools.schemas","detail":"every tool has an object input schema","status":"pass","category":"hygiene"},{"id":"tools.annotations","detail":"only 20 of 28 tools declare readOnlyHint or destructiveHint","status":"warn","category":"hygiene"},{"id":"tools.directory_hints","detail":"no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: nucleus_telemetry (idempotentHint); nucleus_federation (idempotentHint); nucleus_lane_stop (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …","status":"fail","category":"hygiene"},{"id":"tools.token_cost","detail":"about 10,662 tokens to load every tool","status":"warn","category":"hygiene"},{"id":"tools.api_dump","detail":"tools are not a one-to-one API dump","status":"pass","category":"hygiene"},{"id":"stability.changes","detail":"no tool changes in 30 days","status":"pass","category":"stability"},{"id":"stability.rug_pull","detail":"no tool changed its meaning under the same name","status":"pass","category":"stability"},{"id":"deps.known_vulns","detail":"no known advisory in 100 resolved packages","status":"pass","category":"dependencies"},{"id":"deps.mcp_sdk_version","detail":"mcp 2.2.0, no known advisory","status":"pass","category":"dependencies"},{"id":"deps.resolvable","detail":"nucleus-mcp@1.15.2 resolved: 100 packages","status":"pass","category":"dependencies"}],"drivers":["-tools.directory_hints","~protocol.modern","~tools.description_length","~tools.annotations","~tools.token_cost"],"flags":[],"tool_count":28,"token_estimate":10662,"tools_hash":"0ac811d96b50decc4aac54b88abe3a1d","tools_changed_at":null,"computed_at":"2026-10-19T15:15:47.727Z","disclaimer":"Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed."},"dev.protogrid/identity":{"canonical_id":"io.github.eidetic-works/nucleus","aliases":[],"alias_count":0,"repository_key":"github:eidetic-works/nucleus-mcp","owner":{"verified":false,"method":null,"since":null}}},"next_actions":[{"action":"list_tools","description":"Every current tool with input schemas","href":"/v1/servers/io.github.eidetic-works%2Fnucleus/tools","arguments":{"name":"io.github.eidetic-works/nucleus"}},{"action":"get_connection","description":"Minimal connection block for the preferred remote or package","href":"/v1/servers/io.github.eidetic-works%2Fnucleus/connection?target=mcpServers","arguments":{"name":"io.github.eidetic-works/nucleus","target":"mcpServers"}},{"action":"search","description":"Find other servers by intent","href":"/v1/search?q={query}","arguments":{"q":"{query}"}}]}