# benchweave_sdk > Offline authoring and conformance tools for BenchWeave OTDP device plugins. ## Docs ### API Reference #### Protocols > Protocol / structural-typing interfaces - [Adapter](https://sdk.benchweave.dev/docs/reference/Adapter.html): Structural contract for a device plugin adapter - [HostServices](https://sdk.benchweave.dev/docs/reference/HostServices.html): Scoped host services: clocks, transport, and evidence recording - [OperationContext](https://sdk.benchweave.dev/docs/reference/OperationContext.html): Per-operation identity, deadline, and cancellation state - [interfaces.CaptureServices](https://sdk.benchweave.dev/docs/reference/interfaces.CaptureServices.html) - [interfaces.DatasetServices](https://sdk.benchweave.dev/docs/reference/interfaces.DatasetServices.html) - [interfaces.LinkControlServices](https://sdk.benchweave.dev/docs/reference/interfaces.LinkControlServices.html) #### Testing doubles > Deterministic, hardware-free host and context doubles - [testing.MockHost](https://sdk.benchweave.dev/docs/reference/testing.MockHost.html) - [testing.MockContext](https://sdk.benchweave.dev/docs/reference/testing.MockContext.html) - [testing.ConformanceError](https://sdk.benchweave.dev/docs/reference/testing.ConformanceError.html) #### Conformance > Reusable adapter lifecycle and operation checks - [conformance.check_operation](https://sdk.benchweave.dev/docs/reference/conformance.check_operation.html) - [conformance.check_lifecycle](https://sdk.benchweave.dev/docs/reference/conformance.check_lifecycle.html) #### Validation > Offline schema and semantic checks against the vendored contracts - [validation.contract_documents](https://sdk.benchweave.dev/docs/reference/validation.contract_documents.html) - [validation.validate](https://sdk.benchweave.dev/docs/reference/validation.validate.html) - [validation.validate_request](https://sdk.benchweave.dev/docs/reference/validation.validate_request.html) - [validation.validate_result](https://sdk.benchweave.dev/docs/reference/validation.validate_result.html) - [validation.validate_descriptor](https://sdk.benchweave.dev/docs/reference/validation.validate_descriptor.html) - [validation.validate_transport_provider](https://sdk.benchweave.dev/docs/reference/validation.validate_transport_provider.html) - [validation.verify_provider_pin](https://sdk.benchweave.dev/docs/reference/validation.verify_provider_pin.html) #### Presentation > Offline presentation validation and bounded, symlink-refusing reads - [presentation.read_file](https://sdk.benchweave.dev/docs/reference/presentation.read_file.html) - [presentation.check_ui](https://sdk.benchweave.dev/docs/reference/presentation.check_ui.html) - [presentation.validate_preset](https://sdk.benchweave.dev/docs/reference/presentation.validate_preset.html) - [presentation.validate_presentation](https://sdk.benchweave.dev/docs/reference/presentation.validate_presentation.html) - [presentation.load_validated_preview_inputs](https://sdk.benchweave.dev/docs/reference/presentation.load_validated_preview_inputs.html) - [presentation.ValidatedPreviewInputs](https://sdk.benchweave.dev/docs/reference/presentation.ValidatedPreviewInputs.html) - [presentation.resolve_preset_action](https://sdk.benchweave.dev/docs/reference/presentation.resolve_preset_action.html) #### Packaging > Deterministic bundle inventory helpers - [packaging.inventory](https://sdk.benchweave.dev/docs/reference/packaging.inventory.html) - [packaging.verify_inventory](https://sdk.benchweave.dev/docs/reference/packaging.verify_inventory.html) #### Standalone capture > The three capture methods on a local filesystem, for work without a gateway - [capture.capture_root](https://sdk.benchweave.dev/docs/reference/capture.capture_root.html) - [capture.StandaloneCaptureWriter](https://sdk.benchweave.dev/docs/reference/capture.StandaloneCaptureWriter.html)