Sandboxed code execution for AI agents. Provides a Python SDK client for executing code (Python, Bash, Node.js) in isolated sandbox environments with support for persistent state, streaming, webhooks, and file management.
Baponi SDK provides well-structured tool definitions with complete input schemas and descriptions for all 10 tools. Tool names follow verb_noun convention (execute, cancel, upload_url, download_url, list_files). Descriptions are substantive (100-250 chars typical), explaining what each tool does and when to use it. Parameters include type definitions, descriptions, and sensible defaults. However, output schemas are not documented in the tool definitions, callers must infer structure from return type hints. Error handling guidance is minimal. Security considerations around code execution are not surfaced in tool descriptions. Tool composition is good: execute/execute_stream/execute_webhook provide three execution modes with clear distinctions.
Cancel a running execution.
Execute code in a sandbox. Anthropic integration tool using @beta_tool decorator.
Get a signed URL for downloading a file from the sandbox.
Execute code in a sandboxed environment.
Execute code with real-time NDJSON streaming. Returns an ExecutionStream that yields typed events as they arrive.
Execute code in webhook (async) mode. The server accepts the request immediately and returns a 202 with a trace_id. Use the returned ExecutionHandle to poll for status, wait for completion, or cancel.
Output schemas not documented. Tool definitions lack return type documentation, forcing callers to infer structure from code or runtime behavior. LLMs cannot plan downstream operations without knowing what fields to expect.
Security context missing from descriptions. Tools execute arbitrary code (execute, execute_stream, execute_webhook) but descriptions do not mention sandboxing guarantees, resource limits, or what code can/cannot access. LLMs need explicit security boundaries.
Error recovery guidance absent. No descriptions explain what to do if execution fails, times out, or is rejected. LLMs cannot self-correct without actionable error messages.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 67 | 2026-07-28+ | v2 |
Get the status of an execution by trace_id.
List files in a sandbox directory.
Reconnect to an existing execution's NDJSON stream. Uses GET /v1/executions/{trace_id}/output to resume from a specific sequence number. Safe to retry (GET is idempotent).
Get a signed URL for uploading a file to the sandbox.
Parameter constraints not fully specified. timeout accepts 1-3600 seconds (documented), but language enum values are stated in description text rather than as formal enum constraint. Metadata max 10 keys and env_vars max 50 vars are mentioned but not enforced via schema.
Tool naming ambiguity: 'reconnect_stream' is unclear, does it reconnect to a live stream or resume a completed one? Name should be 'resume_stream_output' or 'get_execution_output' to clarify intent.