AI governance SDK — intercept, audit, and control AI agent tool calls. Add human-in-the-loop approval, kill switches, and a full audit trail to any AI agent.
TrustLoop SDK presents a coherent governance toolkit with consistent naming, clear descriptions, and well-structured input schemas. All 14 tools follow verb_noun naming convention (intercept, getLogs, createRule, blockTool, etc.). Descriptions are concise and explain purpose clearly. Input schemas use proper JSON Schema with types and descriptions for all parameters. However, output schemas are not explicitly documented in the source, and error handling patterns are not visible, only generic HTTP error wrapping. The server lacks safety patterns like confirmation requests for irreversible operations (deleteRule, blockTool, decide).
Retired — use the Kill Switch page at app.navige.ai instead. Throws NavigeError immediately.
Retired — create policies from the Policies page at app.navige.ai instead. Throws NavigeError immediately.
Retired — approve/deny from the Approvals page, the notification email/Slack link, or the /approve/:id and /deny/:id links directly. Throws NavigeError immediately.
Retired — manage policies from the Policies page at app.navige.ai instead. Throws NavigeError immediately.
Retired — see the Audit Log page's export button at app.navige.ai instead. Throws NavigeError immediately.
Poll the outcome of a PENDING decision from an intercept({wait: false}) call. Backed by GET /enforce/status/:approvalId.
Retired — see the Kill Switch page at app.navige.ai instead. Throws NavigeError immediately.
Output schemas not documented in source code. getLogs, getRules, createRule, getStats, and all other tools return Promise types without visible response structure documentation. LLMs cannot infer what fields to expect in responses, forcing guesswork about downstream tool chaining.
Destructive operations (deleteRule, blockTool, decide with 'denied' action) lack confirmation or dry-run patterns. An agent can permanently delete a rule or block critical tools without explicit user consent. No pre-execution warning or reversibility guidance.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 17 | 2026-07-28+ | v2 |
| 2026-03-09 | C | 61 | - | v1 |
Retired — see the Audit Log page at app.navige.ai instead. Throws NavigeError immediately.
Retired — see Settings at app.navige.ai instead. Throws NavigeError immediately.
Retired — see the Approvals page at app.navige.ai, or poll getApprovalStatus() for one specific pending intercept() call. Throws NavigeError immediately.
Retired — see the Policies page at app.navige.ai instead. Throws NavigeError immediately.
Retired — see the Registry/Spend pages at app.navige.ai instead. Throws NavigeError immediately.
Intercept a tool call before executing it. Backed by POST /enforce — the API key itself identifies the agent, so Navige returns a decision only; your own code performs the real action. Returns ALLOWED, BLOCKED, or PENDING (requires human approval).
Retired — use the Kill Switch page at app.navige.ai instead. Throws NavigeError immediately.
Retired — configure Slack/email/webhook from Settings at app.navige.ai instead. Throws NavigeError immediately.
Error handling is generic HTTP-based (status code + error message). No structured error classification, agent cannot distinguish retryable errors (e.g. rate limit) from user-fixable errors (e.g. invalid rule_text) from fatal errors. No recovery guidance in error responses.
Some parameter descriptions are minimal (70 chars or less). 'reason' in blockTool says 'Why this tool is blocked (for audit trail)' but does not explain format constraints. 'status' in getLogs says 'Filter by status: ALLOWED, BLOCKED, PENDING, APPROVED, DENIED' but enums are shown as examples rather than formal constraints.
Types.d.ts file referenced in package.json but not visible in source. Without the TypeScript definitions, cannot verify if output types (InterceptResult, Rule[], BlockedTool[], etc.) are properly documented for type-aware clients.