naftiko: 1.0.0-alpha2 info: label: LangSmith — sandboxes description: 'LangSmith — sandboxes. 17 operations. Lead operation: Get sandbox access decision. Self-contained Naftiko capability covering one Langsmith business surface.' tags: - Langsmith - sandboxes created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: LANGSMITH_API_KEY: LANGSMITH_API_KEY capability: consumes: - type: http namespace: langsmith-sandboxes baseUri: '' description: LangSmith — sandboxes business capability. Self-contained, no shared references. resources: - name: auth-sandbox-access path: /auth/sandbox-access operations: - name: get method: GET description: Get sandbox access decision outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: sandbox_id in: query type: string description: Sandbox claim UUID required: true - name: action in: query type: string description: 'Runtime action: exec | file | tunnel | proxy' required: true - name: v2-sandboxes-boxes path: /v2/sandboxes/boxes operations: - name: get method: GET description: List sandbox claims outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: limit in: query type: integer description: Maximum number of results - name: offset in: query type: integer description: Pagination offset - name: name_contains in: query type: string description: Filter by name substring - name: status in: query type: string description: Filter by status (provisioning, ready, failed, stopped, deleting) - name: sort_by in: query type: string description: Sort column (name, status, created_at) - name: sort_direction in: query type: string description: Sort direction (asc, desc) - name: post method: POST description: Create a sandbox claim outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: v2-sandboxes-boxes-batch-delete path: /v2/sandboxes/boxes/batch-delete operations: - name: post method: POST description: Batch delete sandbox claims outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: v2-sandboxes-boxes-name path: /v2/sandboxes/boxes/{name} operations: - name: get method: GET description: Get a sandbox claim outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: name in: path type: string description: Sandbox claim display name required: true - name: delete method: DELETE description: Delete a sandbox claim outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: name in: path type: string description: Sandbox claim display name or UUID required: true - name: patch method: PATCH description: Update a sandbox claim outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: name in: path type: string description: Current sandbox claim display name required: true - name: body in: body type: object description: Request body (JSON). required: true - name: v2-sandboxes-boxes-name-service-url path: /v2/sandboxes/boxes/{name}/service-url operations: - name: post method: POST description: Generate a service access token outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: name in: path type: string description: Sandbox claim display name required: true - name: body in: body type: object description: Request body (JSON). required: true - name: v2-sandboxes-boxes-name-snapshot path: /v2/sandboxes/boxes/{name}/snapshot operations: - name: post method: POST description: Capture a snapshot from a sandbox outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: name in: path type: string description: Sandbox claim display name required: true - name: body in: body type: object description: Request body (JSON). required: true - name: v2-sandboxes-boxes-name-start path: /v2/sandboxes/boxes/{name}/start operations: - name: post method: POST description: Start a sandbox outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: name in: path type: string description: Sandbox claim display name required: true - name: v2-sandboxes-boxes-name-status path: /v2/sandboxes/boxes/{name}/status operations: - name: get method: GET description: Get sandbox claim status outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: name in: path type: string description: Sandbox claim display name required: true - name: v2-sandboxes-boxes-name-stop path: /v2/sandboxes/boxes/{name}/stop operations: - name: post method: POST description: Stop a sandbox outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: name in: path type: string description: Sandbox claim display name required: true - name: v2-sandboxes-snapshots path: /v2/sandboxes/snapshots operations: - name: get method: GET description: List snapshots outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: limit in: query type: integer description: Maximum number of results - name: offset in: query type: integer description: Pagination offset - name: name_contains in: query type: string description: Filter by name substring - name: status in: query type: string description: Filter by status (building, ready, failed, deleting) - name: sort_by in: query type: string description: Sort column (name, status, created_at) - name: sort_direction in: query type: string description: Sort direction (asc, desc) - name: post method: POST description: Create a snapshot outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: v2-sandboxes-snapshots-snapshot_id path: /v2/sandboxes/snapshots/{snapshot_id} operations: - name: get method: GET description: Get a snapshot outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: snapshot_id in: path type: string description: Snapshot UUID required: true - name: delete method: DELETE description: Delete a snapshot outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: snapshot_id in: path type: string description: Snapshot UUID required: true - name: v2-sandboxes-usage path: /v2/sandboxes/usage operations: - name: get method: GET description: Get sandbox resource usage outputRawFormat: json outputParameters: - name: result type: object value: $. authentication: type: bearer token: '{{env.LANGSMITH_API_KEY}}' exposes: - type: rest namespace: langsmith-sandboxes-rest port: 8080 description: REST adapter for LangSmith — sandboxes. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/auth/sandbox-access name: auth-sandbox-access description: REST surface for auth-sandbox-access. operations: - method: GET name: get description: Get sandbox access decision call: langsmith-sandboxes.get with: sandbox_id: rest.sandbox_id action: rest.action outputParameters: - type: object mapping: $. - path: /v1/v2/sandboxes/boxes name: v2-sandboxes-boxes description: REST surface for v2-sandboxes-boxes. operations: - method: GET name: get description: List sandbox claims call: langsmith-sandboxes.get with: limit: rest.limit offset: rest.offset name_contains: rest.name_contains status: rest.status sort_by: rest.sort_by sort_direction: rest.sort_direction outputParameters: - type: object mapping: $. - method: POST name: post description: Create a sandbox claim call: langsmith-sandboxes.post with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/v2/sandboxes/boxes/batch-delete name: v2-sandboxes-boxes-batch-delete description: REST surface for v2-sandboxes-boxes-batch-delete. operations: - method: POST name: post description: Batch delete sandbox claims call: langsmith-sandboxes.post with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/v2/sandboxes/boxes/{name} name: v2-sandboxes-boxes-name description: REST surface for v2-sandboxes-boxes-name. operations: - method: GET name: get description: Get a sandbox claim call: langsmith-sandboxes.get with: name: rest.name outputParameters: - type: object mapping: $. - method: DELETE name: delete description: Delete a sandbox claim call: langsmith-sandboxes.delete with: name: rest.name outputParameters: - type: object mapping: $. - method: PATCH name: patch description: Update a sandbox claim call: langsmith-sandboxes.patch with: name: rest.name body: rest.body outputParameters: - type: object mapping: $. - path: /v1/v2/sandboxes/boxes/{name}/service-url name: v2-sandboxes-boxes-name-service-url description: REST surface for v2-sandboxes-boxes-name-service-url. operations: - method: POST name: post description: Generate a service access token call: langsmith-sandboxes.post with: name: rest.name body: rest.body outputParameters: - type: object mapping: $. - path: /v1/v2/sandboxes/boxes/{name}/snapshot name: v2-sandboxes-boxes-name-snapshot description: REST surface for v2-sandboxes-boxes-name-snapshot. operations: - method: POST name: post description: Capture a snapshot from a sandbox call: langsmith-sandboxes.post with: name: rest.name body: rest.body outputParameters: - type: object mapping: $. - path: /v1/v2/sandboxes/boxes/{name}/start name: v2-sandboxes-boxes-name-start description: REST surface for v2-sandboxes-boxes-name-start. operations: - method: POST name: post description: Start a sandbox call: langsmith-sandboxes.post with: name: rest.name outputParameters: - type: object mapping: $. - path: /v1/v2/sandboxes/boxes/{name}/status name: v2-sandboxes-boxes-name-status description: REST surface for v2-sandboxes-boxes-name-status. operations: - method: GET name: get description: Get sandbox claim status call: langsmith-sandboxes.get with: name: rest.name outputParameters: - type: object mapping: $. - path: /v1/v2/sandboxes/boxes/{name}/stop name: v2-sandboxes-boxes-name-stop description: REST surface for v2-sandboxes-boxes-name-stop. operations: - method: POST name: post description: Stop a sandbox call: langsmith-sandboxes.post with: name: rest.name outputParameters: - type: object mapping: $. - path: /v1/v2/sandboxes/snapshots name: v2-sandboxes-snapshots description: REST surface for v2-sandboxes-snapshots. operations: - method: GET name: get description: List snapshots call: langsmith-sandboxes.get with: limit: rest.limit offset: rest.offset name_contains: rest.name_contains status: rest.status sort_by: rest.sort_by sort_direction: rest.sort_direction outputParameters: - type: object mapping: $. - method: POST name: post description: Create a snapshot call: langsmith-sandboxes.post with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/v2/sandboxes/snapshots/{snapshot-id} name: v2-sandboxes-snapshots-snapshot-id description: REST surface for v2-sandboxes-snapshots-snapshot_id. operations: - method: GET name: get description: Get a snapshot call: langsmith-sandboxes.get with: snapshot_id: rest.snapshot_id outputParameters: - type: object mapping: $. - method: DELETE name: delete description: Delete a snapshot call: langsmith-sandboxes.delete with: snapshot_id: rest.snapshot_id outputParameters: - type: object mapping: $. - path: /v1/v2/sandboxes/usage name: v2-sandboxes-usage description: REST surface for v2-sandboxes-usage. operations: - method: GET name: get description: Get sandbox resource usage call: langsmith-sandboxes.get outputParameters: - type: object mapping: $. - type: mcp namespace: langsmith-sandboxes-mcp port: 9090 transport: http description: MCP adapter for LangSmith — sandboxes. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: get-sandbox-access-decision description: Get sandbox access decision hints: readOnly: true destructive: false idempotent: true call: langsmith-sandboxes.get with: sandbox_id: tools.sandbox_id action: tools.action outputParameters: - type: object mapping: $. - name: list-sandbox-claims description: List sandbox claims hints: readOnly: true destructive: false idempotent: true call: langsmith-sandboxes.get with: limit: tools.limit offset: tools.offset name_contains: tools.name_contains status: tools.status sort_by: tools.sort_by sort_direction: tools.sort_direction outputParameters: - type: object mapping: $. - name: create-sandbox-claim description: Create a sandbox claim hints: readOnly: false destructive: false idempotent: false call: langsmith-sandboxes.post with: body: tools.body outputParameters: - type: object mapping: $. - name: batch-delete-sandbox-claims description: Batch delete sandbox claims hints: readOnly: false destructive: false idempotent: false call: langsmith-sandboxes.post with: body: tools.body outputParameters: - type: object mapping: $. - name: get-sandbox-claim description: Get a sandbox claim hints: readOnly: true destructive: false idempotent: true call: langsmith-sandboxes.get with: name: tools.name outputParameters: - type: object mapping: $. - name: delete-sandbox-claim description: Delete a sandbox claim hints: readOnly: false destructive: true idempotent: true call: langsmith-sandboxes.delete with: name: tools.name outputParameters: - type: object mapping: $. - name: update-sandbox-claim description: Update a sandbox claim hints: readOnly: false destructive: false idempotent: true call: langsmith-sandboxes.patch with: name: tools.name body: tools.body outputParameters: - type: object mapping: $. - name: generate-service-access-token description: Generate a service access token hints: readOnly: false destructive: false idempotent: false call: langsmith-sandboxes.post with: name: tools.name body: tools.body outputParameters: - type: object mapping: $. - name: capture-snapshot-sandbox description: Capture a snapshot from a sandbox hints: readOnly: false destructive: false idempotent: false call: langsmith-sandboxes.post with: name: tools.name body: tools.body outputParameters: - type: object mapping: $. - name: start-sandbox description: Start a sandbox hints: readOnly: false destructive: false idempotent: false call: langsmith-sandboxes.post with: name: tools.name outputParameters: - type: object mapping: $. - name: get-sandbox-claim-status description: Get sandbox claim status hints: readOnly: true destructive: false idempotent: true call: langsmith-sandboxes.get with: name: tools.name outputParameters: - type: object mapping: $. - name: stop-sandbox description: Stop a sandbox hints: readOnly: false destructive: false idempotent: false call: langsmith-sandboxes.post with: name: tools.name outputParameters: - type: object mapping: $. - name: list-snapshots description: List snapshots hints: readOnly: true destructive: false idempotent: true call: langsmith-sandboxes.get with: limit: tools.limit offset: tools.offset name_contains: tools.name_contains status: tools.status sort_by: tools.sort_by sort_direction: tools.sort_direction outputParameters: - type: object mapping: $. - name: create-snapshot description: Create a snapshot hints: readOnly: false destructive: false idempotent: false call: langsmith-sandboxes.post with: body: tools.body outputParameters: - type: object mapping: $. - name: get-snapshot description: Get a snapshot hints: readOnly: true destructive: false idempotent: true call: langsmith-sandboxes.get with: snapshot_id: tools.snapshot_id outputParameters: - type: object mapping: $. - name: delete-snapshot description: Delete a snapshot hints: readOnly: false destructive: true idempotent: true call: langsmith-sandboxes.delete with: snapshot_id: tools.snapshot_id outputParameters: - type: object mapping: $. - name: get-sandbox-resource-usage description: Get sandbox resource usage hints: readOnly: true destructive: false idempotent: true call: langsmith-sandboxes.get outputParameters: - type: object mapping: $.