{"openapi":"3.1.0","info":{"title":"E2B (BYOK) API","version":"0.1.0","description":"E2B (BYOK) lets an AI assistant read your own E2B data through the E2B API with a key you supply (API key). Read-only: 9 tools (list_sandboxes, get_sandbox, get_sandbox_metrics, get_sandbox_logs, list_templates, list_template_builds, list_snapshots, list_volumes, get_team_metrics). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it is...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-e2b.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-e2b/docs"},"termsOfService":"https://connectorbay.com/byok-e2b/terms"},"servers":[{"url":"https://byok-e2b.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-e2b/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_sandboxes":{"post":{"operationId":"list_sandboxes","summary":"List your E2B sandboxes (running and paused) newest first, with template, state, start and end time, CPU, memory and dis","description":"List your E2B sandboxes (running and paused) newest first, with template, state, start and end time, CPU, memory and disk size. Use for \"Which E2B sandboxes are running right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"state":{"anyOf":[{"enum":["running","paused"],"type":"string"},{"type":"null"}],"default":null,"description":"Only sandboxes in this state: running or paused (leave empty for both).","title":"State"},"template":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only sandboxes started from this template ID or alias.","title":"Template"},"order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Sort order by start time: desc (newest first) or asc.","title":"Order"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many sandboxes to return (1 to 100).","title":"Limit"},"next_token":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token returned by the previous call (leave empty for the first page).","title":"Next Token"}},"title":"list_sandboxesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_sandbox":{"post":{"operationId":"get_sandbox","summary":"Get one sandbox: template, state, start and end time, resources, whether internet access is allowed and its lifecycle (a","description":"Get one sandbox: template, state, start and end time, resources, whether internet access is allowed and its lifecycle (auto-resume, action on timeout). Use for \"Show the details of one E2B sandbox\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sandbox_id":{"description":"Sandbox ID as returned by list_sandboxes (sandboxID), for example 'ixjj3iankaishgcge4jwn'.","maxLength":80,"title":"Sandbox Id","type":"string"}},"required":["sandbox_id"],"title":"get_sandboxArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_sandbox_metrics":{"post":{"operationId":"get_sandbox_metrics","summary":"Get CPU, memory and disk usage samples of one sandbox over a time window. Use for \"How much CPU and memory is my E2B san","description":"Get CPU, memory and disk usage samples of one sandbox over a time window. Use for \"How much CPU and memory is my E2B sandbox using\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sandbox_id":{"description":"Sandbox ID as returned by list_sandboxes (sandboxID), for example 'ixjj3iankaishgcge4jwn'.","maxLength":80,"title":"Sandbox Id","type":"string"},"start":{"anyOf":[{"maximum":4102444800,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Start of the time window as a Unix timestamp in seconds (leave empty for the default window).","title":"Start"},"end":{"anyOf":[{"maximum":4102444800,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"End of the time window as a Unix timestamp in seconds (leave empty for now).","title":"End"}},"required":["sandbox_id"],"title":"get_sandbox_metricsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_sandbox_logs":{"post":{"operationId":"get_sandbox_logs","summary":"Read the log lines of one sandbox (up to 1000 per call), optionally by level or search text; page with the cursor. Use f","description":"Read the log lines of one sandbox (up to 1000 per call), optionally by level or search text; page with the cursor. Use for \"Show the latest error logs of an E2B sandbox\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sandbox_id":{"description":"Sandbox ID as returned by list_sandboxes (sandboxID), for example 'ixjj3iankaishgcge4jwn'.","maxLength":80,"title":"Sandbox Id","type":"string"},"level":{"anyOf":[{"enum":["debug","info","warn","error"],"type":"string"},{"type":"null"}],"default":null,"description":"Only lines of this level.","title":"Level"},"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only lines containing this text.","title":"Search"},"direction":{"anyOf":[{"enum":["forward","backward"],"type":"string"},{"type":"null"}],"default":null,"description":"Read forward (oldest first) or backward (newest first).","title":"Direction"},"cursor":{"anyOf":[{"maximum":4102444800000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Timestamp cursor (milliseconds) to continue from; leave empty for the start.","title":"Cursor"},"limit":{"anyOf":[{"maximum":1000,"minimum":0,"type":"integer"},{"type":"null"}],"default":100,"description":"How many lines to return (0 to 1000).","title":"Limit"}},"required":["sandbox_id"],"title":"get_sandbox_logsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_templates":{"post":{"operationId":"list_templates","summary":"List the sandbox templates your team can use, with resources, public flag, aliases, build status, spawn count and last u","description":"List the sandbox templates your team can use, with resources, public flag, aliases, build status, spawn count and last use. Use for \"Which E2B templates do I have and which built successfully\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_templatesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_template_builds":{"post":{"operationId":"list_template_builds","summary":"List the builds of one template (status, resources, timestamps), newest first. Use for \"Show the build history of an E2B","description":"List the builds of one template (status, resources, timestamps), newest first. Use for \"Show the build history of an E2B template\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"template_id":{"description":"Template ID as returned by list_templates (templateID).","maxLength":80,"title":"Template Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many builds to return (1 to 100).","title":"Limit"},"next_token":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token returned by the previous call (leave empty for the first page).","title":"Next Token"}},"required":["template_id"],"title":"list_template_buildsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_snapshots":{"post":{"operationId":"list_snapshots","summary":"List persistent snapshots of your sandboxes with their IDs and names, optionally for one sandbox. Use for \"Which E2B san","description":"List persistent snapshots of your sandboxes with their IDs and names, optionally for one sandbox. Use for \"Which E2B sandbox snapshots do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sandbox_id":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only snapshots taken from this sandbox ID.","title":"Sandbox Id"},"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only snapshots with this name.","title":"Name"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many snapshots to return (1 to 100).","title":"Limit"},"next_token":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token returned by the previous call (leave empty for the first page).","title":"Next Token"}},"title":"list_snapshotsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_volumes":{"post":{"operationId":"list_volumes","summary":"List the persistent volumes of your team with ID and name. Use for \"Which E2B volumes does my team have\".","description":"List the persistent volumes of your team with ID and name. Use for \"Which E2B volumes does my team have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_volumesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_team_metrics":{"post":{"operationId":"get_team_metrics","summary":"Get your team's concurrent sandbox count and sandbox start rate over time. Needs your team ID, shown in the E2B dashboar","description":"Get your team's concurrent sandbox count and sandbox start rate over time. Needs your team ID, shown in the E2B dashboard. Use for \"How many concurrent E2B sandboxes did my team run today\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"team_id":{"description":"Team ID from the E2B dashboard settings, for example '8f2b1c3e-0d4a-4a55-9c3e-1a2b3c4d5e6f'.","maxLength":80,"title":"Team Id","type":"string"},"start":{"anyOf":[{"maximum":4102444800,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Start of the time window as a Unix timestamp in seconds (leave empty for the default window).","title":"Start"},"end":{"anyOf":[{"maximum":4102444800,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"End of the time window as a Unix timestamp in seconds (leave empty for now).","title":"End"}},"required":["team_id"],"title":"get_team_metricsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}