Digital Worker Manifest V2 — Workday for AI Agents
2026-03-13
LOCKSTEP TRACEABILITY MATRIX --- api_endpoints:
- "POST /v1/agent/bootstrap (department, worker_type, metadata.hr_record)"
- "POST /auth/agent-profiles (department, workerType)"
- "PATCH /auth/agent-profiles/:agentId (department, workerType, metadata.hr_record deep merge)"
sdk_methods_updated:
- "ts: client.agentProfiles.create({ department, workerType })"
- "ts: client.agentProfiles.update({ department, workerType })"
- "ts: client.agentProfiles.bootstrap({ department, workerType })"
- "py: client.agent_profiles.create(department=, worker_type=)"
- "py: client.agent_profiles.update(department=, worker_type=)"
- "py: client.agent_profiles.bootstrap(department=, worker_type=)"
mcp_tools_updated:
- "br_bootstrap_agent (department, worker_type, metadata params)"
---
What We Built
Every AI agent in BrainstormRouter now carries a structured HR record — the same data model a CISO or CFO would expect to see for a human worker in Workday. Two new queryable columns (department, worker_type) enable organizational filtering, while a deep-mergeable hr_record JSONB object captures identity, org structure, job description, compliance posture, and KPI targets.
The dashboard's Agent Roster now shows Department and Type columns with colored badges. The agent dossier drawer renders the full HR record with editable fields. A single PATCH call can update column fields and nested metadata atomically, with deep merge preserving sibling sub-objects across incremental edits.
Why It Matters
Enterprise buyers evaluating AI agent platforms ask three questions: "Who authorized this agent?", "What department does it belong to?", and "Is it SOX-relevant?" Before V2, BrainstormRouter tracked budgets and lifecycle states but couldn't answer organizational questions. Now it can.
This positions BrainstormRouter as the execution-side complement to Workday's Agent System of Record. Workday plans the workforce; BrainstormRouter governs it at runtime — with the same concepts (departments, worker types, compliance flags, KPI thresholds) applied to digital workers.
How It Works
Schema — two new indexed columns:
ADD COLUMN IF NOT EXISTS department TEXT,
ADD COLUMN IF NOT EXISTS worker_type TEXT;
CREATE INDEX idx_agent_profiles_department ON agent_profiles (tenant_id, department);
TypeScript SDK — full type safety:
import { BrainstormRouter } from "brainstormrouter";
const client = new BrainstormRouter({ apiKey: "br_live_..." });
// Bootstrap with HR record
await client.agentProfiles.bootstrap({
agentId: "cs-agent-01",
department: "Customer Success",
workerType: "employee",
metadata: {
hr_record: {
identity: { description: "Tier 2 support agent" },
job_description: {
primary_objective: "Resolve customer tickets within SLA",
capabilities: ["ticket-triage", "escalation"],
prohibited_actions: ["billing-changes"],
},
compliance: { audit_required: true, data_classification: "confidential" },
},
},
});
Deep merge — incremental HR edits preserved:
// First PATCH: set identity
await client.agentProfiles.update("cs-agent-01", {
metadata: { hr_record: { identity: { description: "CS bot" } } },
});
// Second PATCH: add compliance — identity is preserved, not overwritten
await client.agentProfiles.update("cs-agent-01", {
metadata: { hr_record: { compliance: { audit_required: true } } },
});
// Result: both identity.description AND compliance.audit_required exist
MCP — agents can self-register with HR metadata:
Params: { agent_id, department, worker_type, metadata: { hr_record: {...} } }
The Numbers
- 2 new indexed columns —
departmentandworker_type, queryable for organizational reporting - 5 HR record sections — identity, organization, job_description, compliance, performance_metrics
- 61 tests passing — 30 store tests, 6 route-level profile tests, 25 bootstrap tests
- 6 SDK methods updated — 3 TypeScript + 3 Python (sync + async)
- v32 migration — applied to production, zero-downtime (nullable columns)
- Deep merge — 2-level: preserves sibling sub-objects AND inner keys within same sub-object
Competitive Edge
No competing AI gateway (Portkey, OpenRouter, Letta) offers structured HR metadata for AI agents. They track costs and routes; BrainstormRouter tracks organizational identity, compliance posture, and KPI targets — the data a CISO needs for SOC 2 audits and a CFO needs for department-level cost attribution. This is the difference between a router and an Agent System of Record.
Lockstep Checklist
> _You MUST check these boxes [x] and verify the corresponding files are updated BEFORE committing this log._
- [x] API Routes:
src/api/routes/agent-bootstrap.tsandsrc/api/routes/auth.tsupdated with V2 fields and deep merge. - [x] TS SDK:
packages/sdk-ts/src/resources/agent-profiles.ts—WorkerType,HrRecordtypes exported, create/update/bootstrap params updated. - [x] Python SDK:
packages/sdk-py/src/brainstormrouter/resources/agent_profiles.py— sync + async create/update/bootstrap accept department/worker_type. - [x] MCP Schemas:
src/mcp/server.ts—br_bootstrap_agentschema includes department, worker_type, metadata params. - [x] Dashboard: Agent Roster shows Dept/Type columns; dossier drawer renders and edits HR record.
- [x] Migration: v32 applied to production (department, worker_type columns + index).
- [x] agents.json:
agent_hr_recordcapability added,br_bootstrap_agentdescription updated.