A secure research pipeline with multi-layer input sanitization, structured verification, tool sandboxing, and memory management. Processes text, PDF, image, audio, and video inputs through PydanticAI agents with registry-driven tool execution.
Three tools with basic schemas and descriptions, but significant gaps in parameter documentation, error handling, and composition. Tool names follow verb_noun convention (positive), but descriptions lack depth and actionable guidance. No parameter descriptions visible in schema definitions. Output schemas undocumented. Error handling is minimal, tools return success/failure but lack recovery guidance. Security considerations (SSRF, sandboxing) are mentioned in descriptions but not reflected in parameter validation or error responses. Average tool score: 42/100.
Executes Python code in a sandboxed environment (disabled by default, requires VRAKSHA_ENABLE_PYTHON_EXEC=1)
Evaluates mathematical expressions and returns the result
Fetches content from a URL with SSRF protection (blocks internal targets like 127.0.0.1, localhost, 169.254.169.254) and enforces HTTP/HTTPS schemes only
Parameter descriptions missing from all tools. Schema shows only type and description for 'expression', 'code', 'url' but no guidance on format, constraints, or valid ranges. LLMs cannot infer whether 'expression' accepts '2+2' or 'sin(pi/2)' without explicit documentation.
Output schemas completely undocumented. No specification of what math.calculator returns (number? object with value+unit?), what code.python_exec returns (stdout? stderr? both?), or what web.fetch_url returns (raw text? structured object with headers?). LLMs cannot plan downstream tool calls without knowing response structure.
Error handling lacks recovery guidance. ToolCallRecord returns success=False with a reason, but reasons are generic ('tool timed out', 'tool error: <exc>') and do not guide the LLM on next steps. No distinction between retryable, user-fixable, and fatal errors.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 40 | 2026-07-28+ | v2 |
code.python_exec description mentions sandboxing and restrictedpython but does not document what code is allowed, what builtins are available, or what happens if code tries to access the filesystem. LLMs cannot reason about constraints without explicit documentation.
web.fetch_url description lists SSRF protections (blocks 127.0.0.1, localhost, 169.254.169.254) but does not document timeout, max response size, or what happens if the URL is unreachable. No guidance on when to use this vs. other data-fetching tools.