# Sofiia Tools Audit (NODA2)

Date: 2026-03-01  
Node: NODA2 (local laptop)  
Scope: Router tool stack + requested integrations (AgentEmailTool, BrowserTool, SecureVault, SafeCodeExecutor, CalendarTool) + broader Sofiia tool system readiness.

## 1) Inventory and Wiring Integrity

- Tool definitions declared in router: **56 executable tools** (`services/router/tool_manager.py`)
- Tool dispatch branches in router: **56 tools**
- Dispatch-to-handler integrity check: **no missing handler definitions**

Evidence:
- Definitions source: `services/router/tool_manager.py`
- Dispatch source: `services/router/tool_manager.py`

## 2) NODA2 Infrastructure Readiness

Calendar stack is wired into NODA2 compose:
- `router` env has `CALENDAR_SERVICE_URL=http://calendar-service:8001`
- `router` mounts `./tools:/app/tools:ro` (required for local tool modules)
- `router` depends on `calendar-service`
- `calendar-service` service present and running
- `radicale` service present and running

Compose source:
- `docker-compose.node2-sofiia.yml`

## 3) Requested Tool Audit (Runtime)

### AgentEmailTool
- Route wiring: present
- RBAC mapping: present (`tools.email.use`)
- Limits: present
- Runtime check: `list_inboxes` -> `ok` (empty list expected on fresh setup)

### BrowserTool
- Route wiring: present
- RBAC mapping: present (`tools.browser.use`)
- Limits: present
- Runtime check: `start_session/goto/get_current_url/close_session` -> `ok`
- Async loop blocker resolved via thread offload in router adapter.

### SecureVault
- Route wiring: present
- RBAC mapping: present (`tools.vault.manage`)
- Limits: present
- Runtime check: `store` -> `ok`

### SafeCodeExecutor
- Route wiring: present
- RBAC mapping: present (`tools.exec.safe`)
- Limits: present
- Runtime check: `validate` -> `ok` (`python` sample valid)

### CalendarTool (Radicale/CalDAV via calendar-service)
- Route wiring: present
- RBAC mapping: present (`tools.calendar.use`)
- Limits: present
- Runtime check:
  - `calendar-service /health` -> healthy
  - `calendar_tool list_calendars` without `account_id` -> domain error `account_id required` (expected), proving router->service path is live.

## 4) RBAC and Governance Validation

Files present and active:
- `config/tools_rollout.yml`
- `config/rbac_tools_matrix.yml`
- `config/tool_limits.yml`

Validated outcomes:
- `sofiia` and `admin` mapped to `agent_cto` rollout
- New tools included in `cto_tools`
- Role entitlements include calendar/email/browser/executor/vault usage
- Negative check passed: `monitor` denied on `secure_vault_tool`

## 5) Sofiia CTO Access Audit (repo / notion / git / nodes)

### Repo access
- `repo_tool` available and callable
- Runtime check `repo_tool:metadata` -> `ok`

### Notion access
- `notion_tool` available and callable
- Runtime check `notion_tool:status` -> `ok` (workspace bot identity returned)

### Git/repo operational tooling
- `repo_tool`, `pr_reviewer_tool`, `contract_tool`, `kb_tool` are present in tool definitions and dispatch.

### Node visibility/control plane
- Console endpoint `GET /api/agents?nodes=NODA2` returns healthy agent registry for NODA2.
- Nodes registry file present: `config/nodes_registry.yml`

## 6) Documentation Coverage

Current docs directories found:
- `docs/tools/` (tool docs exist for key governance/ops tools)
- `docs/audit/` and `docs/audits/` (existing system audit artifacts)

Gap observed:
- Documentation depth is uneven across all 56 tools; some newer tools are wired and working but not yet fully documented in `docs/tools/`.

## 7) Current Risk Register (Audit Findings)

1. **Medium**: Calendar integration is operational, but no account bootstrap in this audit run (no connected calendar account configured yet).
2. **Low/Medium**: Tool documentation is incomplete relative to actual implemented tool surface (56 tools).
3. **Low**: Repo is in a very large dirty state; future changes should stay strictly path-scoped to avoid accidental mixed commits.

## 8) Appendix: Executable Tool Set (56)

agent_email_tool
alert_ingest_tool
architecture_pressure_tool
backlog_tool
binance_account_bots
binance_bots_top
browser_tool
calc_window_quote
calendar_tool
comfy_generate_image
comfy_generate_video
config_linter_tool
contract_tool
cost_analyzer_tool
crawl4ai_scrape
crm_create_job
crm_create_quote
crm_search_client
crm_update_quote
crm_upsert_client
crm_upsert_site
crm_upsert_window_unit
data_governance_tool
dependency_scanner_tool
docs_render_invoice_pdf
docs_render_quote_pdf
drift_analyzer_tool
file_tool
graph_query
image_generate
incident_escalation_tool
incident_intelligence_tool
job_orchestrator_tool
kb_tool
market_data
memory_search
notion_tool
observability_tool
oncall_tool
pieces_tool
pr_reviewer_tool
presentation_create
presentation_download
presentation_status
remember_fact
repo_tool
risk_engine_tool
risk_history_tool
safe_code_executor_tool
schedule_confirm_slot
schedule_propose_slots
secure_vault_tool
threatmodel_tool
tts_speak
web_extract
web_search

