{
  "$schema": "https://github.com/capabilityhostprotocol/chp-core/blob/main/schemas/capability-descriptor.schema.json",
  "protocol": "CHP",
  "spec": "https://capabilityhostprotocol.com/capabilities-txt",
  "host": "capabilityhostprotocol.com",
  "docs": "https://docs.capabilityhostprotocol.com",
  "generated": "2026-06-24T23:00:46.004Z",
  "note": "Discovery manifest. Each entry is a capability reference; resolve capability_uri to its full CapabilityDescriptor on the host.",
  "capabilities": [
    {
      "id": "chp.adapters.asyncapi.describe_channel",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.asyncapi.describe_channel",
      "version": "0.1.0",
      "description": "Describe a single channel. Schema content never in evidence.",
      "adapter": "chp.adapters.asyncapi",
      "category": "agents"
    },
    {
      "id": "chp.adapters.asyncapi.list_channels",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.asyncapi.list_channels",
      "version": "0.1.0",
      "description": "List channels defined in the loaded AsyncAPI spec.",
      "adapter": "chp.adapters.asyncapi",
      "category": "agents"
    },
    {
      "id": "chp.adapters.asyncapi.load_spec",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.asyncapi.load_spec",
      "version": "0.1.0",
      "description": "Parse and load an AsyncAPI spec document. Spec content never in evidence.",
      "adapter": "chp.adapters.asyncapi",
      "category": "agents"
    },
    {
      "id": "chp.adapters.asyncapi.publish",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.asyncapi.publish",
      "version": "0.1.0",
      "description": "Publish a message to a channel. Message payload never in evidence.",
      "adapter": "chp.adapters.asyncapi",
      "category": "agents"
    },
    {
      "id": "chp.adapters.audit.get_invocation",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.audit.get_invocation",
      "version": "1.0.0",
      "description": "Fetch event metadata for a specific invocation ID.",
      "adapter": "chp.adapters.audit",
      "category": "platform"
    },
    {
      "id": "chp.adapters.audit.query_invocations",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.audit.query_invocations",
      "version": "1.0.0",
      "description": "Query invocation records from the audit log with optional filters.",
      "adapter": "chp.adapters.audit",
      "category": "platform"
    },
    {
      "id": "chp.adapters.audit.stats",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.audit.stats",
      "version": "1.0.0",
      "description": "Aggregate invocation counts by outcome and capability over a time window.",
      "adapter": "chp.adapters.audit",
      "category": "platform"
    },
    {
      "id": "chp.adapters.audit.token_report",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.audit.token_report",
      "version": "1.0.0",
      "adapter": "chp.adapters.audit",
      "category": "platform"
    },
    {
      "id": "chp.adapters.aws.ec2_list",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.aws.ec2_list",
      "version": "0.1.0",
      "description": "List EC2 instances with optional state filter.",
      "adapter": "chp.adapters.aws",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.aws.ec2_start",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.aws.ec2_start",
      "version": "0.1.0",
      "description": "Start a stopped EC2 instance.",
      "adapter": "chp.adapters.aws",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.aws.ec2_stop",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.aws.ec2_stop",
      "version": "0.1.0",
      "description": "Stop a running EC2 instance.",
      "adapter": "chp.adapters.aws",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.aws.lambda_invoke",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.aws.lambda_invoke",
      "version": "0.1.0",
      "description": "Invoke a Lambda function. Payload and response body never in evidence.",
      "adapter": "chp.adapters.aws",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.aws.lambda_list",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.aws.lambda_list",
      "version": "0.1.0",
      "description": "List Lambda functions.",
      "adapter": "chp.adapters.aws",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.aws.s3_delete",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.aws.s3_delete",
      "version": "0.1.0",
      "description": "Delete an S3 object.",
      "adapter": "chp.adapters.aws",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.aws.s3_list",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.aws.s3_list",
      "version": "0.1.0",
      "description": "List objects in an S3 bucket, optionally filtered by prefix.",
      "adapter": "chp.adapters.aws",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.aws.s3_metadata",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.aws.s3_metadata",
      "version": "0.1.0",
      "description": "Get metadata for a specific S3 object without downloading its content.",
      "adapter": "chp.adapters.aws",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.aws.s3_put",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.aws.s3_put",
      "version": "0.1.0",
      "description": "Upload content to an S3 object. Content never in evidence.",
      "adapter": "chp.adapters.aws",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.azure.blob_delete",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.azure.blob_delete",
      "version": "0.1.0",
      "description": "Delete an Azure blob.",
      "adapter": "chp.adapters.azure",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.azure.blob_list",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.azure.blob_list",
      "version": "0.1.0",
      "description": "List blobs in an Azure Storage container.",
      "adapter": "chp.adapters.azure",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.azure.blob_metadata",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.azure.blob_metadata",
      "version": "0.1.0",
      "description": "Get metadata for a specific Azure blob without downloading content.",
      "adapter": "chp.adapters.azure",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.azure.blob_put",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.azure.blob_put",
      "version": "0.1.0",
      "description": "Upload content to an Azure blob. Content never in evidence.",
      "adapter": "chp.adapters.azure",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.azure.function_invoke",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.azure.function_invoke",
      "version": "0.1.0",
      "description": "Invoke an Azure Function. Payload and response body never in evidence.",
      "adapter": "chp.adapters.azure",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.azure.function_list",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.azure.function_list",
      "version": "0.1.0",
      "description": "List Azure Functions, optionally filtered by resource group.",
      "adapter": "chp.adapters.azure",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.azure.vm_list",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.azure.vm_list",
      "version": "0.1.0",
      "description": "List Azure Virtual Machines, optionally filtered by resource group.",
      "adapter": "chp.adapters.azure",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.azure.vm_start",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.azure.vm_start",
      "version": "0.1.0",
      "description": "Start a stopped Azure Virtual Machine.",
      "adapter": "chp.adapters.azure",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.azure.vm_stop",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.azure.vm_stop",
      "version": "0.1.0",
      "description": "Stop a running Azure Virtual Machine.",
      "adapter": "chp.adapters.azure",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.calendar.create_event",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.calendar.create_event",
      "version": "0.1.0",
      "description": "Create a new calendar event. Description and attendees never in evidence.",
      "adapter": "chp.adapters.calendar",
      "category": "data"
    },
    {
      "id": "chp.adapters.calendar.delete_event",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.calendar.delete_event",
      "version": "0.1.0",
      "description": "Delete a calendar event.",
      "adapter": "chp.adapters.calendar",
      "category": "data"
    },
    {
      "id": "chp.adapters.calendar.get_event",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.calendar.get_event",
      "version": "0.1.0",
      "description": "Get a single event by ID. Description never in evidence.",
      "adapter": "chp.adapters.calendar",
      "category": "data"
    },
    {
      "id": "chp.adapters.calendar.list_events",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.calendar.list_events",
      "version": "0.1.0",
      "description": "List events in a calendar within a time range.",
      "adapter": "chp.adapters.calendar",
      "category": "data"
    },
    {
      "id": "chp.adapters.calendar.update_event",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.calendar.update_event",
      "version": "0.1.0",
      "description": "Update an existing event. Description and attendees never in evidence.",
      "adapter": "chp.adapters.calendar",
      "category": "data"
    },
    {
      "id": "chp.adapters.ci.run_all",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.ci.run_all",
      "version": "1.0.0",
      "description": "Run pytest across all packages in the repo. Each suite is a separate ctx.ainvoke(run_suite) call — every package gets its own evidence record.",
      "adapter": "chp.adapters.ci",
      "category": "code"
    },
    {
      "id": "chp.adapters.ci.run_suite",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.ci.run_suite",
      "version": "1.0.0",
      "description": "Run pytest for a single package and emit pass/fail evidence. Output is not recorded — only counts and duration.",
      "adapter": "chp.adapters.ci",
      "category": "code"
    },
    {
      "id": "chp.adapters.composition.define",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.composition.define",
      "version": "1.0.0",
      "description": "Register a named workflow (sequence of capability invocations).",
      "adapter": "chp.adapters.composition",
      "category": "agents"
    },
    {
      "id": "chp.adapters.composition.get",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.composition.get",
      "version": "1.0.0",
      "description": "Get a workflow definition by name.",
      "adapter": "chp.adapters.composition",
      "category": "agents"
    },
    {
      "id": "chp.adapters.composition.list",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.composition.list",
      "version": "1.0.0",
      "description": "List all registered workflows.",
      "adapter": "chp.adapters.composition",
      "category": "agents"
    },
    {
      "id": "chp.adapters.composition.run",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.composition.run",
      "version": "1.0.0",
      "description": "Execute a registered workflow by name.",
      "adapter": "chp.adapters.composition",
      "category": "agents"
    },
    {
      "id": "chp.adapters.conformance.check_adapter",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.conformance.check_adapter",
      "version": "1.0.0",
      "description": "Runtime introspection of a loaded adapter — checks schema, version, and metadata completeness.",
      "adapter": "chp.adapters.conformance",
      "category": "agents"
    },
    {
      "id": "chp.adapters.conformance.check_all",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.conformance.check_all",
      "version": "1.0.0",
      "description": "Check all loaded adapters for violations and return a ranked summary.",
      "adapter": "chp.adapters.conformance",
      "category": "agents"
    },
    {
      "id": "chp.adapters.conformance.check_source",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.conformance.check_source",
      "version": "1.0.0",
      "description": "Run static AST analysis on an adapter source file and report violations.",
      "adapter": "chp.adapters.conformance",
      "category": "agents"
    },
    {
      "id": "chp.adapters.conformance.check_staged",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.conformance.check_staged",
      "version": "1.0.0",
      "description": "Check staged Python files against the active dev session baseline. Returns new violations only — existing baseline violations are not re-flagged.",
      "adapter": "chp.adapters.conformance",
      "category": "agents"
    },
    {
      "id": "chp.adapters.conformance.close_dev_session",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.conformance.close_dev_session",
      "version": "1.0.0",
      "description": "Close the active dev session: run final conformance scan, compare vs baseline, delete session state.",
      "adapter": "chp.adapters.conformance",
      "category": "agents"
    },
    {
      "id": "chp.adapters.conformance.open_dev_session",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.conformance.open_dev_session",
      "version": "1.0.0",
      "description": "Open a tracked dev session: validate Radicle issue, snapshot baseline conformance, create plan, write active-session state.",
      "adapter": "chp.adapters.conformance",
      "category": "agents"
    },
    {
      "id": "chp.adapters.conformance.policy_check",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.conformance.policy_check",
      "version": "1.0.0",
      "description": "Check a commit message for the Radicle issue reference policy (rad:XXXXXXX).",
      "adapter": "chp.adapters.conformance",
      "category": "agents"
    },
    {
      "id": "chp.adapters.conformance.report_violations",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.conformance.report_violations",
      "version": "1.0.0",
      "description": "Auto-open Radicle issues for adapters with conformance violations. Deduplicates against existing open issues.",
      "adapter": "chp.adapters.conformance",
      "category": "agents"
    },
    {
      "id": "chp.adapters.container.list_containers",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.container.list_containers",
      "version": "1.0.0",
      "description": "List Docker containers (running by default; pass all=true for stopped too).",
      "adapter": "chp.adapters.container",
      "category": "infra"
    },
    {
      "id": "chp.adapters.container.list_images",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.container.list_images",
      "version": "1.0.0",
      "description": "List locally available Docker images.",
      "adapter": "chp.adapters.container",
      "category": "infra"
    },
    {
      "id": "chp.adapters.container.pull",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.container.pull",
      "version": "1.0.0",
      "description": "Pull a Docker image from a registry.",
      "adapter": "chp.adapters.container",
      "category": "infra"
    },
    {
      "id": "chp.adapters.container.run",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.container.run",
      "version": "1.0.0",
      "description": "Run a Docker container to completion and capture output.",
      "adapter": "chp.adapters.container",
      "category": "infra"
    },
    {
      "id": "chp.adapters.container.stop",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.container.stop",
      "version": "1.0.0",
      "description": "Stop a running Docker container.",
      "adapter": "chp.adapters.container",
      "category": "infra"
    },
    {
      "id": "chp.adapters.delegation.accept",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.delegation.accept",
      "version": "0.1.0",
      "description": "Accept a pending delegation. Emits delegation_accepted.",
      "adapter": "chp.adapters.delegation",
      "category": "agents"
    },
    {
      "id": "chp.adapters.delegation.complete",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.delegation.complete",
      "version": "0.1.0",
      "adapter": "chp.adapters.delegation",
      "category": "agents"
    },
    {
      "id": "chp.adapters.delegation.create",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.delegation.create",
      "version": "0.1.0",
      "adapter": "chp.adapters.delegation",
      "category": "agents"
    },
    {
      "id": "chp.adapters.delegation.reject",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.delegation.reject",
      "version": "0.1.0",
      "description": "Reject a delegation with a stated reason. Emits delegation_rejected.",
      "adapter": "chp.adapters.delegation",
      "category": "agents"
    },
    {
      "id": "chp.adapters.document_store.add",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.document_store.add",
      "version": "0.1.0",
      "description": "Add or replace a document. Content is accepted but never stored in evidence.",
      "adapter": "chp.adapters.document_store",
      "category": "filesystem"
    },
    {
      "id": "chp.adapters.document_store.delete",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.document_store.delete",
      "version": "0.1.0",
      "description": "Delete a document by ID.",
      "adapter": "chp.adapters.document_store",
      "category": "filesystem"
    },
    {
      "id": "chp.adapters.document_store.get",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.document_store.get",
      "version": "0.1.0",
      "description": "Retrieve a document by ID. Content is returned to caller but never stored in evidence.",
      "adapter": "chp.adapters.document_store",
      "category": "filesystem"
    },
    {
      "id": "chp.adapters.document_store.list",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.document_store.list",
      "version": "0.1.0",
      "description": "List documents with optional metadata filter. Returns id and title only.",
      "adapter": "chp.adapters.document_store",
      "category": "filesystem"
    },
    {
      "id": "chp.adapters.document_store.search",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.document_store.search",
      "version": "0.1.0",
      "description": "Search documents by keyword query. Returns id, title, url, and score only — content never in evidence.",
      "adapter": "chp.adapters.document_store",
      "category": "filesystem"
    },
    {
      "id": "chp.adapters.email.send",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.email.send",
      "version": "1.0.0",
      "description": "Send an outbound email.",
      "adapter": "chp.adapters.email",
      "category": "messaging"
    },
    {
      "id": "chp.adapters.evaluation.get_result",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.evaluation.get_result",
      "version": "0.1.0",
      "description": "Retrieve a past evaluation result by result ID.",
      "adapter": "chp.adapters.evaluation",
      "category": "ai"
    },
    {
      "id": "chp.adapters.evaluation.list_evals",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.evaluation.list_evals",
      "version": "0.1.0",
      "description": "List registered evaluation rubrics.",
      "adapter": "chp.adapters.evaluation",
      "category": "ai"
    },
    {
      "id": "chp.adapters.evaluation.register_eval",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.evaluation.register_eval",
      "version": "0.1.0",
      "description": "Register an evaluation rubric with named criteria.",
      "adapter": "chp.adapters.evaluation",
      "category": "ai"
    },
    {
      "id": "chp.adapters.evaluation.run_eval",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.evaluation.run_eval",
      "version": "0.1.0",
      "description": "Run a registered rubric against inputs. Inputs and expected NEVER in evidence.",
      "adapter": "chp.adapters.evaluation",
      "category": "ai"
    },
    {
      "id": "chp.adapters.file_transform.convert",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.file_transform.convert",
      "version": "0.1.0",
      "description": "Convert a file to another format.",
      "adapter": "chp.adapters.file_transform",
      "category": "filesystem"
    },
    {
      "id": "chp.adapters.file_transform.extract_text",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.file_transform.extract_text",
      "version": "0.1.0",
      "description": "Extract text and metadata from a file. Text content never in evidence.",
      "adapter": "chp.adapters.file_transform",
      "category": "filesystem"
    },
    {
      "id": "chp.adapters.file_transform.get_metadata",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.file_transform.get_metadata",
      "version": "0.1.0",
      "description": "Read file metadata without accessing content.",
      "adapter": "chp.adapters.file_transform",
      "category": "filesystem"
    },
    {
      "id": "chp.adapters.file_transform.split_pages",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.file_transform.split_pages",
      "version": "0.1.0",
      "description": "Extract specific pages from a multi-page document into separate files.",
      "adapter": "chp.adapters.file_transform",
      "category": "filesystem"
    },
    {
      "id": "chp.adapters.filesystem.glob_files",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.filesystem.glob_files",
      "version": "1.0.0",
      "adapter": "chp.adapters.filesystem",
      "category": "filesystem"
    },
    {
      "id": "chp.adapters.filesystem.grep",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.filesystem.grep",
      "version": "1.0.0",
      "adapter": "chp.adapters.filesystem",
      "category": "filesystem"
    },
    {
      "id": "chp.adapters.filesystem.list_directory",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.filesystem.list_directory",
      "version": "1.0.0",
      "description": "List entries in a directory.",
      "adapter": "chp.adapters.filesystem",
      "category": "filesystem"
    },
    {
      "id": "chp.adapters.filesystem.read_file",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.filesystem.read_file",
      "version": "1.0.0",
      "description": "Read a file",
      "adapter": "chp.adapters.filesystem",
      "category": "filesystem"
    },
    {
      "id": "chp.adapters.filesystem.stat_path",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.filesystem.stat_path",
      "version": "1.0.0",
      "description": "Check existence, type, and size of a path.",
      "adapter": "chp.adapters.filesystem",
      "category": "filesystem"
    },
    {
      "id": "chp.adapters.filesystem.write_file",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.filesystem.write_file",
      "version": "1.0.0",
      "description": "Write or overwrite a file.",
      "adapter": "chp.adapters.filesystem",
      "category": "filesystem"
    },
    {
      "id": "chp.adapters.form.close_form",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.form.close_form",
      "version": "0.1.0",
      "description": "Close a form to prevent further submissions.",
      "adapter": "chp.adapters.form",
      "category": "data"
    },
    {
      "id": "chp.adapters.form.define_form",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.form.define_form",
      "version": "0.1.0",
      "description": "Create a form with typed fields. Field definitions never in evidence.",
      "adapter": "chp.adapters.form",
      "category": "data"
    },
    {
      "id": "chp.adapters.form.get_submission",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.form.get_submission",
      "version": "0.1.0",
      "description": "Retrieve a submission by ID including its answers.",
      "adapter": "chp.adapters.form",
      "category": "data"
    },
    {
      "id": "chp.adapters.form.list_submissions",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.form.list_submissions",
      "version": "0.1.0",
      "description": "List submission IDs for a form. Submission answers never in evidence.",
      "adapter": "chp.adapters.form",
      "category": "data"
    },
    {
      "id": "chp.adapters.form.submit",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.form.submit",
      "version": "0.1.0",
      "description": "Submit answers to an open form. Answers never in evidence.",
      "adapter": "chp.adapters.form",
      "category": "data"
    },
    {
      "id": "chp.adapters.gcp.compute_list",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.gcp.compute_list",
      "version": "0.1.0",
      "description": "List Compute Engine instances, optionally filtered by zone.",
      "adapter": "chp.adapters.gcp",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.gcp.compute_start",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.gcp.compute_start",
      "version": "0.1.0",
      "description": "Start a stopped Compute Engine instance.",
      "adapter": "chp.adapters.gcp",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.gcp.compute_stop",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.gcp.compute_stop",
      "version": "0.1.0",
      "description": "Stop a running Compute Engine instance.",
      "adapter": "chp.adapters.gcp",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.gcp.function_invoke",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.gcp.function_invoke",
      "version": "0.1.0",
      "description": "Invoke a Cloud Function. Payload and response never in evidence.",
      "adapter": "chp.adapters.gcp",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.gcp.function_list",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.gcp.function_list",
      "version": "0.1.0",
      "description": "List Cloud Functions, optionally filtered by region.",
      "adapter": "chp.adapters.gcp",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.gcp.gcs_delete",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.gcp.gcs_delete",
      "version": "0.1.0",
      "description": "Delete a GCS object.",
      "adapter": "chp.adapters.gcp",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.gcp.gcs_list",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.gcp.gcs_list",
      "version": "0.1.0",
      "description": "List objects in a GCS bucket.",
      "adapter": "chp.adapters.gcp",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.gcp.gcs_metadata",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.gcp.gcs_metadata",
      "version": "0.1.0",
      "description": "Get metadata for a GCS object without downloading content.",
      "adapter": "chp.adapters.gcp",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.gcp.gcs_put",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.gcp.gcs_put",
      "version": "0.1.0",
      "description": "Upload content to a GCS object. Content never in evidence.",
      "adapter": "chp.adapters.gcp",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.git.checkout_branch",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.git.checkout_branch",
      "version": "0.1.0",
      "description": "Create a new branch or switch to an existing one.",
      "adapter": "chp.adapters.git",
      "category": "code"
    },
    {
      "id": "chp.adapters.git.commit",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.git.commit",
      "version": "0.1.0",
      "description": "Stage specified files and create a commit. Diff content is never in evidence.",
      "adapter": "chp.adapters.git",
      "category": "code"
    },
    {
      "id": "chp.adapters.git.diff_summary",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.git.diff_summary",
      "version": "0.1.0",
      "description": "Diff statistics only — files changed, insertions, deletions. Patch text is NEVER returned.",
      "adapter": "chp.adapters.git",
      "category": "code"
    },
    {
      "id": "chp.adapters.git.inspect_repo",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.git.inspect_repo",
      "version": "0.1.0",
      "description": "Repository overview: branch, HEAD SHA, remotes, commit count.",
      "adapter": "chp.adapters.git",
      "category": "code"
    },
    {
      "id": "chp.adapters.git.log",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.git.log",
      "version": "0.1.0",
      "description": "Recent commit list: sha7, author name, subject (truncated), ISO date.",
      "adapter": "chp.adapters.git",
      "category": "code"
    },
    {
      "id": "chp.adapters.git.merge",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.git.merge",
      "version": "0.1.0",
      "description": "Merge a branch into the current branch. Evidence: branch, strategy, HEAD SHA7, conflicts flag.",
      "adapter": "chp.adapters.git",
      "category": "code"
    },
    {
      "id": "chp.adapters.git.precommit_check",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.git.precommit_check",
      "version": "0.1.0",
      "description": "List staged files, count unstaged changes, and flag untracked files.",
      "adapter": "chp.adapters.git",
      "category": "code"
    },
    {
      "id": "chp.adapters.git.pull",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.git.pull",
      "version": "0.1.0",
      "description": "Pull from a remote. Evidence: remote, branch, new HEAD SHA7, fast_forward flag.",
      "adapter": "chp.adapters.git",
      "category": "code"
    },
    {
      "id": "chp.adapters.git.push",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.git.push",
      "version": "0.1.0",
      "description": "Push a ref to a remote. Evidence: remote, ref, HEAD SHA7, success flag.",
      "adapter": "chp.adapters.git",
      "category": "code"
    },
    {
      "id": "chp.adapters.git.status",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.git.status",
      "version": "0.1.0",
      "description": "Working tree status: branch name, staged/unstaged/untracked file counts.",
      "adapter": "chp.adapters.git",
      "category": "code"
    },
    {
      "id": "chp.adapters.github.add_labels",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.github.add_labels",
      "version": "1.0.0",
      "description": "Add labels to an issue or pull request.",
      "adapter": "chp.adapters.github",
      "category": "code"
    },
    {
      "id": "chp.adapters.github.create_comment",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.github.create_comment",
      "version": "1.0.0",
      "description": "Add a comment to an issue or pull request.",
      "adapter": "chp.adapters.github",
      "category": "code"
    },
    {
      "id": "chp.adapters.github.create_issue",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.github.create_issue",
      "version": "1.0.0",
      "description": "Create a new issue in a repository.",
      "adapter": "chp.adapters.github",
      "category": "code"
    },
    {
      "id": "chp.adapters.github.create_pull_request",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.github.create_pull_request",
      "version": "1.0.0",
      "description": "Open a new pull request.",
      "adapter": "chp.adapters.github",
      "category": "code"
    },
    {
      "id": "chp.adapters.github.get_issue",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.github.get_issue",
      "version": "1.0.0",
      "description": "Get a single issue.",
      "adapter": "chp.adapters.github",
      "category": "code"
    },
    {
      "id": "chp.adapters.github.get_pull_request",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.github.get_pull_request",
      "version": "1.0.0",
      "description": "Get a single pull request with merge/CI detail.",
      "adapter": "chp.adapters.github",
      "category": "code"
    },
    {
      "id": "chp.adapters.github.get_repo",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.github.get_repo",
      "version": "1.0.0",
      "description": "Get repository metadata.",
      "adapter": "chp.adapters.github",
      "category": "code"
    },
    {
      "id": "chp.adapters.github.list_issues",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.github.list_issues",
      "version": "1.0.0",
      "description": "List issues for a repository (pull requests excluded).",
      "adapter": "chp.adapters.github",
      "category": "code"
    },
    {
      "id": "chp.adapters.github.list_pr_reviews",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.github.list_pr_reviews",
      "version": "1.0.0",
      "description": "List reviews on a pull request.",
      "adapter": "chp.adapters.github",
      "category": "code"
    },
    {
      "id": "chp.adapters.github.list_pull_requests",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.github.list_pull_requests",
      "version": "1.0.0",
      "description": "List pull requests for a repository.",
      "adapter": "chp.adapters.github",
      "category": "code"
    },
    {
      "id": "chp.adapters.github.list_workflow_runs",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.github.list_workflow_runs",
      "version": "1.0.0",
      "description": "List recent GitHub Actions workflow runs (CI status).",
      "adapter": "chp.adapters.github",
      "category": "code"
    },
    {
      "id": "chp.adapters.github.update_issue",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.github.update_issue",
      "version": "1.0.0",
      "description": "Update an issue (title, state, labels, assignees).",
      "adapter": "chp.adapters.github",
      "category": "code"
    },
    {
      "id": "chp.adapters.graphql.introspect",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.graphql.introspect",
      "version": "0.1.0",
      "description": "Fetch schema types via GraphQL introspection.",
      "adapter": "chp.adapters.graphql",
      "category": "network"
    },
    {
      "id": "chp.adapters.graphql.mutate",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.graphql.mutate",
      "version": "0.1.0",
      "description": "Execute a GraphQL mutation. Variables never in evidence.",
      "adapter": "chp.adapters.graphql",
      "category": "network"
    },
    {
      "id": "chp.adapters.graphql.query",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.graphql.query",
      "version": "0.1.0",
      "description": "Execute a GraphQL query. Variables never in evidence.",
      "adapter": "chp.adapters.graphql",
      "category": "network"
    },
    {
      "id": "chp.adapters.grpc.describe_service",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.grpc.describe_service",
      "version": "0.1.0",
      "description": "Get methods and metadata for a gRPC service.",
      "adapter": "chp.adapters.grpc",
      "category": "network"
    },
    {
      "id": "chp.adapters.grpc.list_services",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.grpc.list_services",
      "version": "0.1.0",
      "description": "List available gRPC services via reflection.",
      "adapter": "chp.adapters.grpc",
      "category": "network"
    },
    {
      "id": "chp.adapters.grpc.server_health",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.grpc.server_health",
      "version": "0.1.0",
      "description": "Check gRPC server or service health via the standard health protocol.",
      "adapter": "chp.adapters.grpc",
      "category": "network"
    },
    {
      "id": "chp.adapters.grpc.unary_call",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.grpc.unary_call",
      "version": "0.1.0",
      "description": "Invoke a unary gRPC method. Request and response body never in evidence.",
      "adapter": "chp.adapters.grpc",
      "category": "network"
    },
    {
      "id": "chp.adapters.host.install_adapter",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.host.install_adapter",
      "version": "1.0.0",
      "adapter": "chp.adapters.host",
      "category": "infra"
    },
    {
      "id": "chp.adapters.host.restart",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.host.restart",
      "version": "1.0.0",
      "description": "Restart this node",
      "adapter": "chp.adapters.host",
      "category": "infra"
    },
    {
      "id": "chp.adapters.host.stats",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.host.stats",
      "version": "1.0.0",
      "description": "Report CPU load, memory, disk, GPU, and platform stats for this node.",
      "adapter": "chp.adapters.host",
      "category": "infra"
    },
    {
      "id": "chp.adapters.host.update",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.host.update",
      "version": "1.0.0",
      "description": "Schedule a detached upgrade of this node",
      "adapter": "chp.adapters.host",
      "category": "infra"
    },
    {
      "id": "chp.adapters.host.version",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.host.version",
      "version": "1.0.0",
      "description": "Report this node",
      "adapter": "chp.adapters.host",
      "category": "infra"
    },
    {
      "id": "chp.adapters.http.request",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.http.request",
      "version": "1.0.0",
      "description": "Make an HTTP request.",
      "adapter": "chp.adapters.http",
      "category": "network"
    },
    {
      "id": "chp.adapters.huggingface.apply_adapter",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.huggingface.apply_adapter",
      "version": "1.0.0",
      "adapter": "chp.adapters.huggingface",
      "category": "ai"
    },
    {
      "id": "chp.adapters.huggingface.cache_info",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.huggingface.cache_info",
      "version": "1.0.0",
      "description": "Scan the local HuggingFace cache and return a storage summary by artifact for governance and quota management.",
      "adapter": "chp.adapters.huggingface",
      "category": "ai"
    },
    {
      "id": "chp.adapters.huggingface.call_space",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.huggingface.call_space",
      "version": "1.0.0",
      "adapter": "chp.adapters.huggingface",
      "category": "ai"
    },
    {
      "id": "chp.adapters.huggingface.classify_image",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.huggingface.classify_image",
      "version": "1.0.0",
      "adapter": "chp.adapters.huggingface",
      "category": "ai"
    },
    {
      "id": "chp.adapters.huggingface.dataset_preview",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.huggingface.dataset_preview",
      "version": "1.0.0",
      "adapter": "chp.adapters.huggingface",
      "category": "ai"
    },
    {
      "id": "chp.adapters.huggingface.embed",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.huggingface.embed",
      "version": "1.0.0",
      "adapter": "chp.adapters.huggingface",
      "category": "ai"
    },
    {
      "id": "chp.adapters.huggingface.evaluate",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.huggingface.evaluate",
      "version": "1.0.0",
      "adapter": "chp.adapters.huggingface",
      "category": "ai"
    },
    {
      "id": "chp.adapters.huggingface.faiss_index",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.huggingface.faiss_index",
      "version": "1.0.0",
      "adapter": "chp.adapters.huggingface",
      "category": "ai"
    },
    {
      "id": "chp.adapters.huggingface.finetune",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.huggingface.finetune",
      "version": "1.0.0",
      "adapter": "chp.adapters.huggingface",
      "category": "ai"
    },
    {
      "id": "chp.adapters.huggingface.generate_image",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.huggingface.generate_image",
      "version": "1.0.0",
      "adapter": "chp.adapters.huggingface",
      "category": "ai"
    },
    {
      "id": "chp.adapters.huggingface.leaderboard_scores",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.huggingface.leaderboard_scores",
      "version": "1.0.0",
      "adapter": "chp.adapters.huggingface",
      "category": "ai"
    },
    {
      "id": "chp.adapters.huggingface.list_collections",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.huggingface.list_collections",
      "version": "1.0.0",
      "description": "List HuggingFace Hub Collections — curated groupings of models and datasets. Enables agents to navigate thematic clusters (e.g. ",
      "adapter": "chp.adapters.huggingface",
      "category": "ai"
    },
    {
      "id": "chp.adapters.huggingface.load_dataset",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.huggingface.load_dataset",
      "version": "1.0.0",
      "adapter": "chp.adapters.huggingface",
      "category": "ai"
    },
    {
      "id": "chp.adapters.huggingface.model_card",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.huggingface.model_card",
      "version": "1.0.0",
      "adapter": "chp.adapters.huggingface",
      "category": "ai"
    },
    {
      "id": "chp.adapters.huggingface.pull",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.huggingface.pull",
      "version": "1.0.0",
      "description": "Download any HuggingFace Hub artifact (model, dataset, tokenizer) to local cache via snapshot_download.",
      "adapter": "chp.adapters.huggingface",
      "category": "ai"
    },
    {
      "id": "chp.adapters.huggingface.pull_for_local_llm",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.huggingface.pull_for_local_llm",
      "version": "1.0.0",
      "adapter": "chp.adapters.huggingface",
      "category": "ai"
    },
    {
      "id": "chp.adapters.huggingface.quantize_to_gguf",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.huggingface.quantize_to_gguf",
      "version": "1.0.0",
      "adapter": "chp.adapters.huggingface",
      "category": "ai"
    },
    {
      "id": "chp.adapters.huggingface.run_pipeline",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.huggingface.run_pipeline",
      "version": "1.0.0",
      "adapter": "chp.adapters.huggingface",
      "category": "ai"
    },
    {
      "id": "chp.adapters.huggingface.search_datasets",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.huggingface.search_datasets",
      "version": "1.0.0",
      "description": "Search HuggingFace Hub for datasets by task, sort, and filter. Symmetric to search_models — enables agents to discover datasets before loading them.",
      "adapter": "chp.adapters.huggingface",
      "category": "ai"
    },
    {
      "id": "chp.adapters.huggingface.search_models",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.huggingface.search_models",
      "version": "1.0.0",
      "adapter": "chp.adapters.huggingface",
      "category": "ai"
    },
    {
      "id": "chp.adapters.huggingface.search_spaces",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.huggingface.search_spaces",
      "version": "1.0.0",
      "description": "Search HuggingFace Hub for Spaces (Gradio/Streamlit apps) by SDK, sort, and filter. Precondition for call_space discovery.",
      "adapter": "chp.adapters.huggingface",
      "category": "ai"
    },
    {
      "id": "chp.adapters.huggingface.tokenize",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.huggingface.tokenize",
      "version": "1.0.0",
      "description": "Encode text to token IDs or decode token IDs to text using a fast HuggingFace tokenizer. No full model load required.",
      "adapter": "chp.adapters.huggingface",
      "category": "ai"
    },
    {
      "id": "chp.adapters.huggingface.transcribe_audio",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.huggingface.transcribe_audio",
      "version": "1.0.0",
      "adapter": "chp.adapters.huggingface",
      "category": "ai"
    },
    {
      "id": "chp.adapters.jira.add_comment",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.jira.add_comment",
      "version": "1.0.0",
      "description": "Add a comment to a Jira issue.",
      "adapter": "chp.adapters.jira",
      "category": "data"
    },
    {
      "id": "chp.adapters.jira.create_issue",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.jira.create_issue",
      "version": "1.0.0",
      "description": "Create a new Jira issue.",
      "adapter": "chp.adapters.jira",
      "category": "data"
    },
    {
      "id": "chp.adapters.jira.get_issue",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.jira.get_issue",
      "version": "1.0.0",
      "description": "Get a Jira issue by key.",
      "adapter": "chp.adapters.jira",
      "category": "data"
    },
    {
      "id": "chp.adapters.jira.list_issues",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.jira.list_issues",
      "version": "1.0.0",
      "description": "List Jira issues using JQL or field filters.",
      "adapter": "chp.adapters.jira",
      "category": "data"
    },
    {
      "id": "chp.adapters.jira.update_issue",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.jira.update_issue",
      "version": "1.0.0",
      "description": "Update a Jira issue (summary, priority, assignee, or transition status).",
      "adapter": "chp.adapters.jira",
      "category": "data"
    },
    {
      "id": "chp.adapters.jobs.list",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.jobs.list",
      "version": "1.0.0",
      "description": "List all jobs and their lifecycle state.",
      "adapter": "chp.adapters.jobs",
      "category": "infra"
    },
    {
      "id": "chp.adapters.jobs.result",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.jobs.result",
      "version": "1.0.0",
      "description": "Fetch a completed job",
      "adapter": "chp.adapters.jobs",
      "category": "infra"
    },
    {
      "id": "chp.adapters.jobs.status",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.jobs.status",
      "version": "1.0.0",
      "description": "Poll a background job",
      "adapter": "chp.adapters.jobs",
      "category": "infra"
    },
    {
      "id": "chp.adapters.jobs.submit",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.jobs.submit",
      "version": "1.0.0",
      "adapter": "chp.adapters.jobs",
      "category": "infra"
    },
    {
      "id": "chp.adapters.kafka.consume",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.kafka.consume",
      "version": "0.1.0",
      "description": "Consume messages from a Kafka topic. Message values returned to caller but never in evidence.",
      "adapter": "chp.adapters.kafka",
      "category": "network"
    },
    {
      "id": "chp.adapters.kafka.list_topics",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.kafka.list_topics",
      "version": "0.1.0",
      "description": "List available Kafka topics.",
      "adapter": "chp.adapters.kafka",
      "category": "network"
    },
    {
      "id": "chp.adapters.kafka.publish",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.kafka.publish",
      "version": "0.1.0",
      "description": "Publish a single message to a Kafka topic. Value never in evidence.",
      "adapter": "chp.adapters.kafka",
      "category": "network"
    },
    {
      "id": "chp.adapters.kafka.publish_batch",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.kafka.publish_batch",
      "version": "0.1.0",
      "description": "Publish multiple messages to a topic. Message values never in evidence.",
      "adapter": "chp.adapters.kafka",
      "category": "network"
    },
    {
      "id": "chp.adapters.kafka.topic_metadata",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.kafka.topic_metadata",
      "version": "0.1.0",
      "description": "Fetch partition and message-count metadata for a topic.",
      "adapter": "chp.adapters.kafka",
      "category": "network"
    },
    {
      "id": "chp.adapters.knowledge_graph.add_edge",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.knowledge_graph.add_edge",
      "version": "1.0.0",
      "description": "Add or replace a directed edge between two nodes.",
      "adapter": "chp.adapters.knowledge_graph",
      "category": "data"
    },
    {
      "id": "chp.adapters.knowledge_graph.add_node",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.knowledge_graph.add_node",
      "version": "1.0.0",
      "description": "Add or replace a node in the knowledge graph.",
      "adapter": "chp.adapters.knowledge_graph",
      "category": "data"
    },
    {
      "id": "chp.adapters.knowledge_graph.delete_node",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.knowledge_graph.delete_node",
      "version": "1.0.0",
      "description": "Delete a node and all its edges.",
      "adapter": "chp.adapters.knowledge_graph",
      "category": "data"
    },
    {
      "id": "chp.adapters.knowledge_graph.get_edges",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.knowledge_graph.get_edges",
      "version": "1.0.0",
      "description": "Get edges connected to a node, with optional direction and relation filter.",
      "adapter": "chp.adapters.knowledge_graph",
      "category": "data"
    },
    {
      "id": "chp.adapters.knowledge_graph.get_node",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.knowledge_graph.get_node",
      "version": "1.0.0",
      "description": "Retrieve a node and its properties by ID.",
      "adapter": "chp.adapters.knowledge_graph",
      "category": "data"
    },
    {
      "id": "chp.adapters.knowledge_graph.list_nodes",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.knowledge_graph.list_nodes",
      "version": "1.0.0",
      "description": "List nodes, optionally filtered by type. Returns IDs and types only.",
      "adapter": "chp.adapters.knowledge_graph",
      "category": "data"
    },
    {
      "id": "chp.adapters.kubernetes.apply_manifest",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.kubernetes.apply_manifest",
      "version": "0.1.0",
      "description": "Create or update a Kubernetes resource from a manifest. Spec never in evidence.",
      "adapter": "chp.adapters.kubernetes",
      "category": "infra"
    },
    {
      "id": "chp.adapters.kubernetes.get_pod_logs",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.kubernetes.get_pod_logs",
      "version": "0.1.0",
      "description": "Fetch pod logs. Log content returned to caller but never in evidence.",
      "adapter": "chp.adapters.kubernetes",
      "category": "infra"
    },
    {
      "id": "chp.adapters.kubernetes.list_deployments",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.kubernetes.list_deployments",
      "version": "0.1.0",
      "description": "List deployments in a namespace.",
      "adapter": "chp.adapters.kubernetes",
      "category": "infra"
    },
    {
      "id": "chp.adapters.kubernetes.list_namespaces",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.kubernetes.list_namespaces",
      "version": "0.1.0",
      "description": "List Kubernetes namespaces.",
      "adapter": "chp.adapters.kubernetes",
      "category": "infra"
    },
    {
      "id": "chp.adapters.kubernetes.list_pods",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.kubernetes.list_pods",
      "version": "0.1.0",
      "description": "List pods in a namespace, optionally filtered by label selector.",
      "adapter": "chp.adapters.kubernetes",
      "category": "infra"
    },
    {
      "id": "chp.adapters.kubernetes.restart_deployment",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.kubernetes.restart_deployment",
      "version": "0.1.0",
      "description": "Trigger a rolling restart of a deployment.",
      "adapter": "chp.adapters.kubernetes",
      "category": "infra"
    },
    {
      "id": "chp.adapters.kubernetes.scale_deployment",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.kubernetes.scale_deployment",
      "version": "0.1.0",
      "description": "Scale a deployment to the specified number of replicas.",
      "adapter": "chp.adapters.kubernetes",
      "category": "infra"
    },
    {
      "id": "chp.adapters.launchd.install",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.launchd.install",
      "version": "1.0.0",
      "adapter": "chp.adapters.launchd",
      "category": "infra"
    },
    {
      "id": "chp.adapters.launchd.list",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.launchd.list",
      "version": "1.0.0",
      "description": "List CHP-managed launchd services (scoped to the managed label prefix).",
      "adapter": "chp.adapters.launchd",
      "category": "infra"
    },
    {
      "id": "chp.adapters.launchd.service_health",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.launchd.service_health",
      "version": "1.0.0",
      "adapter": "chp.adapters.launchd",
      "category": "infra"
    },
    {
      "id": "chp.adapters.launchd.start",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.launchd.start",
      "version": "1.0.0",
      "description": "Start (bootstrap) a service if not loaded, or restart it (kickstart -k) if already loaded.",
      "adapter": "chp.adapters.launchd",
      "category": "infra"
    },
    {
      "id": "chp.adapters.launchd.status",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.launchd.status",
      "version": "1.0.0",
      "description": "Report whether a launchd service is loaded/running, its pid, and last exit code.",
      "adapter": "chp.adapters.launchd",
      "category": "infra"
    },
    {
      "id": "chp.adapters.launchd.stop",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.launchd.stop",
      "version": "1.0.0",
      "description": "Stop (bootout) a loaded launchd service.",
      "adapter": "chp.adapters.launchd",
      "category": "infra"
    },
    {
      "id": "chp.adapters.launchd.uninstall",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.launchd.uninstall",
      "version": "1.0.0",
      "description": "Bootout a service and remove its LaunchAgent plist.",
      "adapter": "chp.adapters.launchd",
      "category": "infra"
    },
    {
      "id": "chp.adapters.linear.add_comment",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.linear.add_comment",
      "version": "1.0.0",
      "description": "Add a comment to a Linear issue.",
      "adapter": "chp.adapters.linear",
      "category": "data"
    },
    {
      "id": "chp.adapters.linear.create_issue",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.linear.create_issue",
      "version": "1.0.0",
      "description": "Create a new Linear issue.",
      "adapter": "chp.adapters.linear",
      "category": "data"
    },
    {
      "id": "chp.adapters.linear.get_issue",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.linear.get_issue",
      "version": "1.0.0",
      "description": "Fetch a single issue by ID, including description.",
      "adapter": "chp.adapters.linear",
      "category": "data"
    },
    {
      "id": "chp.adapters.linear.list_issues",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.linear.list_issues",
      "version": "1.0.0",
      "description": "List issues with optional filters.",
      "adapter": "chp.adapters.linear",
      "category": "data"
    },
    {
      "id": "chp.adapters.linear.update_issue",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.linear.update_issue",
      "version": "1.0.0",
      "description": "Update an existing Linear issue.",
      "adapter": "chp.adapters.linear",
      "category": "data"
    },
    {
      "id": "chp.adapters.llm.call_tool",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.llm.call_tool",
      "version": "1.0.0",
      "description": "Invoke a CHP capability by its sanitized LLM tool name.",
      "adapter": "chp.adapters.llm",
      "category": "ai"
    },
    {
      "id": "chp.adapters.llm.list_tools",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.llm.list_tools",
      "version": "1.0.0",
      "description": "List CHP capabilities as LLM tool definitions.",
      "adapter": "chp.adapters.llm",
      "category": "ai"
    },
    {
      "id": "chp.adapters.local_llm.chat",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.local_llm.chat",
      "version": "1.0.0",
      "description": "Multi-turn chat with message history. Messages are NOT recorded in evidence.",
      "adapter": "chp.adapters.local_llm",
      "category": "ai"
    },
    {
      "id": "chp.adapters.local_llm.generate",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.local_llm.generate",
      "version": "1.0.0",
      "description": "Single-turn text generation. Prompt and completion are NOT recorded in evidence.",
      "adapter": "chp.adapters.local_llm",
      "category": "ai"
    },
    {
      "id": "chp.adapters.local_llm.list_models",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.local_llm.list_models",
      "version": "1.0.0",
      "description": "List models available in the local LLM backend.",
      "adapter": "chp.adapters.local_llm",
      "category": "ai"
    },
    {
      "id": "chp.adapters.local_llm.model_info",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.local_llm.model_info",
      "version": "1.0.0",
      "description": "Get metadata for a specific model (parameter count, context length, quantization).",
      "adapter": "chp.adapters.local_llm",
      "category": "ai"
    },
    {
      "id": "chp.adapters.memory.delete",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.memory.delete",
      "version": "1.0.0",
      "description": "Delete a key from scoped agent memory.",
      "adapter": "chp.adapters.memory",
      "category": "ai"
    },
    {
      "id": "chp.adapters.memory.get",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.memory.get",
      "version": "1.0.0",
      "description": "Read a value from scoped agent memory.",
      "adapter": "chp.adapters.memory",
      "category": "ai"
    },
    {
      "id": "chp.adapters.memory.list",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.memory.list",
      "version": "1.0.0",
      "description": "List all keys in a memory scope.",
      "adapter": "chp.adapters.memory",
      "category": "ai"
    },
    {
      "id": "chp.adapters.memory.set",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.memory.set",
      "version": "1.0.0",
      "description": "Write or update a value in scoped agent memory.",
      "adapter": "chp.adapters.memory",
      "category": "ai"
    },
    {
      "id": "chp.adapters.messages.archive_to_remote",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.messages.archive_to_remote",
      "version": "1.0.0",
      "description": "Archive a session",
      "adapter": "chp.adapters.messages",
      "category": "messaging"
    },
    {
      "id": "chp.adapters.messages.backfill_session",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.messages.backfill_session",
      "version": "1.0.0",
      "description": "Parse a Claude Code JSONL transcript and backfill human-typed turns into the evidence chain.",
      "adapter": "chp.adapters.messages",
      "category": "messaging"
    },
    {
      "id": "chp.adapters.messages.list_sessions",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.messages.list_sessions",
      "version": "1.0.0",
      "description": "List session IDs that have stored conversation transcripts.",
      "adapter": "chp.adapters.messages",
      "category": "messaging"
    },
    {
      "id": "chp.adapters.messages.load_session",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.messages.load_session",
      "version": "1.0.0",
      "description": "Load all conversation turns for a session from the local JSONL store.",
      "adapter": "chp.adapters.messages",
      "category": "messaging"
    },
    {
      "id": "chp.adapters.messages.record_turn",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.messages.record_turn",
      "version": "1.0.0",
      "description": "Record a conversation turn (user/assistant/system) into the evidence chain and JSONL store.",
      "adapter": "chp.adapters.messages",
      "category": "messaging"
    },
    {
      "id": "chp.adapters.mlx.chat",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.mlx.chat",
      "version": "1.0.0",
      "adapter": "chp.adapters.mlx",
      "category": "ai"
    },
    {
      "id": "chp.adapters.mlx.generate",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.mlx.generate",
      "version": "1.0.0",
      "adapter": "chp.adapters.mlx",
      "category": "ai"
    },
    {
      "id": "chp.adapters.mlx.list_models",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.mlx.list_models",
      "version": "1.0.0",
      "description": "List models served by the local mlx_lm server (OpenAI /v1/models), via chp.adapters.http.",
      "adapter": "chp.adapters.mlx",
      "category": "ai"
    },
    {
      "id": "chp.adapters.mlx.start_server",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.mlx.start_server",
      "version": "1.0.0",
      "adapter": "chp.adapters.mlx",
      "category": "ai"
    },
    {
      "id": "chp.adapters.mlx.status",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.mlx.status",
      "version": "1.0.0",
      "adapter": "chp.adapters.mlx",
      "category": "ai"
    },
    {
      "id": "chp.adapters.mlx.stop_server",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.mlx.stop_server",
      "version": "1.0.0",
      "description": "Stop the local mlx_lm server running on a port (SIGTERM the tracked pid).",
      "adapter": "chp.adapters.mlx",
      "category": "ai"
    },
    {
      "id": "chp.adapters.nats.list_subjects",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.nats.list_subjects",
      "version": "0.1.0",
      "description": "List known subjects in the NATS server.",
      "adapter": "chp.adapters.nats",
      "category": "network"
    },
    {
      "id": "chp.adapters.nats.publish",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.nats.publish",
      "version": "0.1.0",
      "description": "Publish a single message to a NATS subject. Message data never in evidence.",
      "adapter": "chp.adapters.nats",
      "category": "network"
    },
    {
      "id": "chp.adapters.nats.publish_batch",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.nats.publish_batch",
      "version": "0.1.0",
      "description": "Publish multiple NATS messages. Message data never in evidence.",
      "adapter": "chp.adapters.nats",
      "category": "network"
    },
    {
      "id": "chp.adapters.nats.request",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.nats.request",
      "version": "0.1.0",
      "description": "Send a request message and await a reply. Request and reply data never in evidence.",
      "adapter": "chp.adapters.nats",
      "category": "network"
    },
    {
      "id": "chp.adapters.nats.subscribe_snapshot",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.nats.subscribe_snapshot",
      "version": "0.1.0",
      "description": "Snapshot of buffered messages for a subject pattern. Message data never in evidence.",
      "adapter": "chp.adapters.nats",
      "category": "network"
    },
    {
      "id": "chp.adapters.notification.broadcast",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.notification.broadcast",
      "version": "0.1.0",
      "description": "Send a notification to multiple recipients. Message body NEVER in evidence.",
      "adapter": "chp.adapters.notification",
      "category": "messaging"
    },
    {
      "id": "chp.adapters.notification.notify",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.notification.notify",
      "version": "0.1.0",
      "description": "Send a notification to a single recipient via the specified channel. Message body NEVER in evidence.",
      "adapter": "chp.adapters.notification",
      "category": "messaging"
    },
    {
      "id": "chp.adapters.notion.append_blocks",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.notion.append_blocks",
      "version": "1.0.0",
      "description": "Append blocks to a Notion page or block.",
      "adapter": "chp.adapters.notion",
      "category": "data"
    },
    {
      "id": "chp.adapters.notion.create_page",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.notion.create_page",
      "version": "1.0.0",
      "description": "Create a new Notion page.",
      "adapter": "chp.adapters.notion",
      "category": "data"
    },
    {
      "id": "chp.adapters.notion.get_page",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.notion.get_page",
      "version": "1.0.0",
      "description": "Get a Notion page by ID.",
      "adapter": "chp.adapters.notion",
      "category": "data"
    },
    {
      "id": "chp.adapters.notion.query_database",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.notion.query_database",
      "version": "1.0.0",
      "description": "Query a Notion database with optional filter and sort.",
      "adapter": "chp.adapters.notion",
      "category": "data"
    },
    {
      "id": "chp.adapters.notion.search",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.notion.search",
      "version": "1.0.0",
      "description": "Search Notion pages and databases.",
      "adapter": "chp.adapters.notion",
      "category": "data"
    },
    {
      "id": "chp.adapters.organization.get_person",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.organization.get_person",
      "version": "0.1.0",
      "description": "Look up a person by ID. Returns name, title, department; email never in evidence.",
      "adapter": "chp.adapters.organization",
      "category": "agents"
    },
    {
      "id": "chp.adapters.organization.get_team",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.organization.get_team",
      "version": "0.1.0",
      "description": "Look up a team by ID. Returns name, department, lead, member count.",
      "adapter": "chp.adapters.organization",
      "category": "agents"
    },
    {
      "id": "chp.adapters.organization.list_members",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.organization.list_members",
      "version": "0.1.0",
      "description": "List org members filtered by department or team.",
      "adapter": "chp.adapters.organization",
      "category": "agents"
    },
    {
      "id": "chp.adapters.organization.list_reports",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.organization.list_reports",
      "version": "0.1.0",
      "description": "List direct or recursive reports for a manager.",
      "adapter": "chp.adapters.organization",
      "category": "agents"
    },
    {
      "id": "chp.adapters.organization.org_path",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.organization.org_path",
      "version": "0.1.0",
      "description": "Get the reporting chain from the root to a given person.",
      "adapter": "chp.adapters.organization",
      "category": "agents"
    },
    {
      "id": "chp.adapters.planning.create_plan",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.planning.create_plan",
      "version": "0.1.0",
      "adapter": "chp.adapters.planning",
      "category": "agents"
    },
    {
      "id": "chp.adapters.planning.reflect",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.planning.reflect",
      "version": "0.1.0",
      "adapter": "chp.adapters.planning",
      "category": "agents"
    },
    {
      "id": "chp.adapters.planning.revise",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.planning.revise",
      "version": "0.1.0",
      "adapter": "chp.adapters.planning",
      "category": "agents"
    },
    {
      "id": "chp.adapters.planning.step_update",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.planning.step_update",
      "version": "0.1.0",
      "adapter": "chp.adapters.planning",
      "category": "agents"
    },
    {
      "id": "chp.adapters.postgres.describe_table",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.postgres.describe_table",
      "version": "1.0.0",
      "description": "Describe a table",
      "adapter": "chp.adapters.postgres",
      "category": "data"
    },
    {
      "id": "chp.adapters.postgres.execute",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.postgres.execute",
      "version": "1.0.0",
      "description": "Run a writing SQL statement (INSERT/UPDATE/DELETE/DDL). High risk.",
      "adapter": "chp.adapters.postgres",
      "category": "data"
    },
    {
      "id": "chp.adapters.postgres.list_tables",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.postgres.list_tables",
      "version": "1.0.0",
      "description": "List tables in a schema (default public).",
      "adapter": "chp.adapters.postgres",
      "category": "data"
    },
    {
      "id": "chp.adapters.postgres.query",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.postgres.query",
      "version": "1.0.0",
      "description": "Run a read-only SQL query (SELECT/WITH/EXPLAIN/SHOW). Rejects writes.",
      "adapter": "chp.adapters.postgres",
      "category": "data"
    },
    {
      "id": "chp.adapters.preference.delete",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.preference.delete",
      "version": "0.1.0",
      "description": "Delete a preference key.",
      "adapter": "chp.adapters.preference",
      "category": "data"
    },
    {
      "id": "chp.adapters.preference.get",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.preference.get",
      "version": "0.1.0",
      "description": "Get a preference value. Value never in evidence.",
      "adapter": "chp.adapters.preference",
      "category": "data"
    },
    {
      "id": "chp.adapters.preference.list",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.preference.list",
      "version": "0.1.0",
      "description": "List preference keys in a namespace. Values never in evidence.",
      "adapter": "chp.adapters.preference",
      "category": "data"
    },
    {
      "id": "chp.adapters.preference.reset_namespace",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.preference.reset_namespace",
      "version": "0.1.0",
      "description": "Delete all preference keys in a namespace.",
      "adapter": "chp.adapters.preference",
      "category": "data"
    },
    {
      "id": "chp.adapters.preference.set",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.preference.set",
      "version": "0.1.0",
      "description": "Store a preference value. Value never in evidence.",
      "adapter": "chp.adapters.preference",
      "category": "data"
    },
    {
      "id": "chp.adapters.process.run",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.process.run",
      "version": "1.0.0",
      "description": "Execute a CLI command with arguments.",
      "adapter": "chp.adapters.process",
      "category": "infra"
    },
    {
      "id": "chp.adapters.radicle.identity",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.radicle.identity",
      "description": "Local Radicle identity: DID public key only. Private key / NID never returned.",
      "adapter": "chp.adapters.radicle",
      "category": "code"
    },
    {
      "id": "chp.adapters.radicle.issue_close",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.radicle.issue_close",
      "description": "Close a Radicle issue by ID.",
      "adapter": "chp.adapters.radicle",
      "category": "code"
    },
    {
      "id": "chp.adapters.radicle.issue_comment",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.radicle.issue_comment",
      "description": "Post a comment on a Radicle issue. Comment text never in evidence.",
      "adapter": "chp.adapters.radicle",
      "category": "code"
    },
    {
      "id": "chp.adapters.radicle.issue_list",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.radicle.issue_list",
      "description": "List Radicle issues: IDs, titles, states. Issue body never in evidence.",
      "adapter": "chp.adapters.radicle",
      "category": "code"
    },
    {
      "id": "chp.adapters.radicle.issue_open",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.radicle.issue_open",
      "description": "Open a new Radicle issue. Issue body never in evidence.",
      "adapter": "chp.adapters.radicle",
      "category": "code"
    },
    {
      "id": "chp.adapters.radicle.issue_show",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.radicle.issue_show",
      "description": "Show a Radicle issue: title, state, comment count. Body never in evidence.",
      "adapter": "chp.adapters.radicle",
      "category": "code"
    },
    {
      "id": "chp.adapters.radicle.list_repos",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.radicle.list_repos",
      "description": "List all locally tracked Radicle repositories (names + RIDs).",
      "adapter": "chp.adapters.radicle",
      "category": "code"
    },
    {
      "id": "chp.adapters.radicle.node_status",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.radicle.node_status",
      "description": "Radicle node status: running/stopped, connected peer count.",
      "adapter": "chp.adapters.radicle",
      "category": "code"
    },
    {
      "id": "chp.adapters.radicle.patch_list",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.radicle.patch_list",
      "description": "List Radicle patches: IDs, titles, states. Patch body and diff never in evidence.",
      "adapter": "chp.adapters.radicle",
      "category": "code"
    },
    {
      "id": "chp.adapters.radicle.patch_open",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.radicle.patch_open",
      "description": "Open a new Radicle patch for the current branch. Patch body never in evidence.",
      "adapter": "chp.adapters.radicle",
      "category": "code"
    },
    {
      "id": "chp.adapters.radicle.push",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.radicle.push",
      "description": "Push a branch to the Radicle remote (git push rad <branch>).",
      "adapter": "chp.adapters.radicle",
      "category": "code"
    },
    {
      "id": "chp.adapters.radicle.repo_info",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.radicle.repo_info",
      "description": "Radicle repository identity: RID, name, description, visibility, delegate count.",
      "adapter": "chp.adapters.radicle",
      "category": "code"
    },
    {
      "id": "chp.adapters.radicle.sync",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.radicle.sync",
      "description": "Sync a Radicle repo to the network (push local state to seeds).",
      "adapter": "chp.adapters.radicle",
      "category": "code"
    },
    {
      "id": "chp.adapters.raspi.camera_capture",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.raspi.camera_capture",
      "version": "1.0.0",
      "description": "Capture a still image. Returns file path, size, and resolution. Image bytes not in evidence.",
      "adapter": "chp.adapters.raspi",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.raspi.gpio_read",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.raspi.gpio_read",
      "version": "1.0.0",
      "description": "Read digital state of a GPIO pin.",
      "adapter": "chp.adapters.raspi",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.raspi.gpio_write",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.raspi.gpio_write",
      "version": "1.0.0",
      "description": "Write digital state to a GPIO pin.",
      "adapter": "chp.adapters.raspi",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.raspi.system_stats",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.raspi.system_stats",
      "version": "1.0.0",
      "description": "CPU temperature, memory, disk usage, and uptime. No hardware dependencies.",
      "adapter": "chp.adapters.raspi",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.registry.describe_host",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.registry.describe_host",
      "version": "1.0.0",
      "description": "Return the host descriptor with its full capability catalog.",
      "adapter": "chp.adapters.registry",
      "category": "platform"
    },
    {
      "id": "chp.adapters.registry.get_capability",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.registry.get_capability",
      "version": "1.0.0",
      "description": "Fetch a capability descriptor by its exact ID.",
      "adapter": "chp.adapters.registry",
      "category": "platform"
    },
    {
      "id": "chp.adapters.registry.list_capabilities",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.registry.list_capabilities",
      "version": "1.0.0",
      "description": "List capabilities registered on the host with optional filters.",
      "adapter": "chp.adapters.registry",
      "category": "platform"
    },
    {
      "id": "chp.adapters.release.bump",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.release.bump",
      "version": "0.1.0",
      "adapter": "chp.adapters.release",
      "category": "infra"
    },
    {
      "id": "chp.adapters.release.publish_npm",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.release.publish_npm",
      "version": "0.1.0",
      "adapter": "chp.adapters.release",
      "category": "infra"
    },
    {
      "id": "chp.adapters.release.publish_pypi",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.release.publish_pypi",
      "version": "0.1.0",
      "adapter": "chp.adapters.release",
      "category": "infra"
    },
    {
      "id": "chp.adapters.release.sync",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.release.sync",
      "version": "0.1.0",
      "adapter": "chp.adapters.release",
      "category": "infra"
    },
    {
      "id": "chp.adapters.release.tag",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.release.tag",
      "version": "0.1.0",
      "adapter": "chp.adapters.release",
      "category": "infra"
    },
    {
      "id": "chp.adapters.rpa.click",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.rpa.click",
      "version": "0.1.0",
      "description": "Click a page element by CSS selector.",
      "adapter": "chp.adapters.rpa",
      "category": "agents"
    },
    {
      "id": "chp.adapters.rpa.extract_text",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.rpa.extract_text",
      "version": "0.1.0",
      "description": "Extract visible text from page or a selector. Text content never in evidence.",
      "adapter": "chp.adapters.rpa",
      "category": "agents"
    },
    {
      "id": "chp.adapters.rpa.fill",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.rpa.fill",
      "version": "0.1.0",
      "description": "Fill an input element. Fill value never in evidence.",
      "adapter": "chp.adapters.rpa",
      "category": "agents"
    },
    {
      "id": "chp.adapters.rpa.navigate",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.rpa.navigate",
      "version": "0.1.0",
      "description": "Navigate the browser to a URL.",
      "adapter": "chp.adapters.rpa",
      "category": "agents"
    },
    {
      "id": "chp.adapters.rpa.screenshot",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.rpa.screenshot",
      "version": "0.1.0",
      "description": "Capture the current page as PNG. Binary data never in evidence.",
      "adapter": "chp.adapters.rpa",
      "category": "agents"
    },
    {
      "id": "chp.adapters.safety.assess",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.safety.assess",
      "version": "0.1.0",
      "adapter": "chp.adapters.safety",
      "category": "agents"
    },
    {
      "id": "chp.adapters.safety.report",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.safety.report",
      "version": "0.1.0",
      "adapter": "chp.adapters.safety",
      "category": "agents"
    },
    {
      "id": "chp.adapters.scout.query",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.scout.query",
      "version": "1.0.0",
      "adapter": "chp.adapters.scout",
      "category": "ai"
    },
    {
      "id": "chp.adapters.secrets.delete",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.secrets.delete",
      "version": "1.0.0",
      "description": "Delete a secret by key.",
      "adapter": "chp.adapters.secrets",
      "category": "infra"
    },
    {
      "id": "chp.adapters.secrets.get",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.secrets.get",
      "version": "1.0.0",
      "description": "Retrieve a secret value by key.",
      "adapter": "chp.adapters.secrets",
      "category": "infra"
    },
    {
      "id": "chp.adapters.secrets.list",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.secrets.list",
      "version": "1.0.0",
      "description": "List available secret key names (no values returned).",
      "adapter": "chp.adapters.secrets",
      "category": "infra"
    },
    {
      "id": "chp.adapters.secrets.set",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.secrets.set",
      "version": "1.0.0",
      "description": "Store or update a secret value.",
      "adapter": "chp.adapters.secrets",
      "category": "infra"
    },
    {
      "id": "chp.adapters.sglang.chat",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.sglang.chat",
      "version": "1.0.0",
      "adapter": "chp.adapters.sglang",
      "category": "ai"
    },
    {
      "id": "chp.adapters.sglang.generate",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.sglang.generate",
      "version": "1.0.0",
      "adapter": "chp.adapters.sglang",
      "category": "ai"
    },
    {
      "id": "chp.adapters.sglang.list_models",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.sglang.list_models",
      "version": "1.0.0",
      "description": "List models served by the local SGLang server (OpenAI /v1/models), via chp.adapters.http.",
      "adapter": "chp.adapters.sglang",
      "category": "ai"
    },
    {
      "id": "chp.adapters.slack.add_reaction",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.slack.add_reaction",
      "version": "1.0.0",
      "description": "Add an emoji reaction to a message.",
      "adapter": "chp.adapters.slack",
      "category": "messaging"
    },
    {
      "id": "chp.adapters.slack.parse_interaction",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.slack.parse_interaction",
      "version": "1.0.0",
      "description": "Normalize a Slack block_actions interaction payload.",
      "adapter": "chp.adapters.slack",
      "category": "messaging"
    },
    {
      "id": "chp.adapters.slack.post_message",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.slack.post_message",
      "version": "1.0.0",
      "description": "Post a message to a channel (optionally in a thread).",
      "adapter": "chp.adapters.slack",
      "category": "messaging"
    },
    {
      "id": "chp.adapters.slack.request_approval",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.slack.request_approval",
      "version": "1.0.0",
      "description": "Post an interactive Approve/Deny message (human-in-the-loop).",
      "adapter": "chp.adapters.slack",
      "category": "messaging"
    },
    {
      "id": "chp.adapters.slack.verify_request",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.slack.verify_request",
      "version": "1.0.0",
      "description": "Verify a Slack request signature (v0 HMAC) with replay protection.",
      "adapter": "chp.adapters.slack",
      "category": "messaging"
    },
    {
      "id": "chp.adapters.smolagents.run",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.smolagents.run",
      "version": "1.0.0",
      "adapter": "chp.adapters.smolagents",
      "category": "ai"
    },
    {
      "id": "chp.adapters.spreadsheet.append_rows",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.spreadsheet.append_rows",
      "version": "0.1.0",
      "description": "Append rows using header-keyed dicts. Row data NEVER in evidence.",
      "adapter": "chp.adapters.spreadsheet",
      "category": "data"
    },
    {
      "id": "chp.adapters.spreadsheet.get_schema",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.spreadsheet.get_schema",
      "version": "0.1.0",
      "description": "Get headers, row count, and column count for a sheet.",
      "adapter": "chp.adapters.spreadsheet",
      "category": "data"
    },
    {
      "id": "chp.adapters.spreadsheet.list_sheets",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.spreadsheet.list_sheets",
      "version": "0.1.0",
      "description": "List all sheet names with row and column counts.",
      "adapter": "chp.adapters.spreadsheet",
      "category": "data"
    },
    {
      "id": "chp.adapters.spreadsheet.read_range",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.spreadsheet.read_range",
      "version": "0.1.0",
      "description": "Read rows from a sheet as header-keyed dicts. Cell values are returned to caller but NEVER stored in evidence.",
      "adapter": "chp.adapters.spreadsheet",
      "category": "data"
    },
    {
      "id": "chp.adapters.spreadsheet.write_range",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.spreadsheet.write_range",
      "version": "0.1.0",
      "description": "Write rows at a given offset. Row data is accepted but NEVER stored in evidence.",
      "adapter": "chp.adapters.spreadsheet",
      "category": "data"
    },
    {
      "id": "chp.adapters.state_machine.create",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.state_machine.create",
      "version": "1.0.0",
      "description": "Create a new finite state machine instance.",
      "adapter": "chp.adapters.state_machine",
      "category": "infra"
    },
    {
      "id": "chp.adapters.state_machine.get_state",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.state_machine.get_state",
      "version": "1.0.0",
      "description": "Inspect the current state and status of a machine.",
      "adapter": "chp.adapters.state_machine",
      "category": "infra"
    },
    {
      "id": "chp.adapters.state_machine.list_machines",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.state_machine.list_machines",
      "version": "1.0.0",
      "description": "List all state machine instances, optionally filtered by status.",
      "adapter": "chp.adapters.state_machine",
      "category": "infra"
    },
    {
      "id": "chp.adapters.state_machine.transition",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.state_machine.transition",
      "version": "1.0.0",
      "description": "Fire an event on a state machine (event = target state name).",
      "adapter": "chp.adapters.state_machine",
      "category": "infra"
    },
    {
      "id": "chp.adapters.synology.container_list",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.synology.container_list",
      "version": "1.0.0",
      "description": "List Container Manager containers and their status.",
      "adapter": "chp.adapters.synology",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.synology.container_start",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.synology.container_start",
      "version": "1.0.0",
      "description": "Start a Container Manager container.",
      "adapter": "chp.adapters.synology",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.synology.container_stop",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.synology.container_stop",
      "version": "1.0.0",
      "description": "Stop a Container Manager container.",
      "adapter": "chp.adapters.synology",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.synology.download_create",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.synology.download_create",
      "version": "1.0.0",
      "description": "Add a download task to Download Station.",
      "adapter": "chp.adapters.synology",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.synology.file_info",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.synology.file_info",
      "version": "1.0.0",
      "description": "Get metadata (size, modified, owner) for a file or folder.",
      "adapter": "chp.adapters.synology",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.synology.file_list",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.synology.file_list",
      "version": "1.0.0",
      "description": "List files in a Synology shared folder.",
      "adapter": "chp.adapters.synology",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.synology.task_list",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.synology.task_list",
      "version": "1.0.0",
      "description": "List Task Scheduler jobs and their last run status.",
      "adapter": "chp.adapters.synology",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.tailscale.chp_hosts",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.tailscale.chp_hosts",
      "version": "1.0.0",
      "adapter": "chp.adapters.tailscale",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.tailscale.devices",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.tailscale.devices",
      "version": "1.0.0",
      "adapter": "chp.adapters.tailscale",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.tailscale.verify_mesh",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.tailscale.verify_mesh",
      "version": "1.0.0",
      "adapter": "chp.adapters.tailscale",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.tei.embed",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.tei.embed",
      "version": "1.0.0",
      "adapter": "chp.adapters.tei",
      "category": "ai"
    },
    {
      "id": "chp.adapters.tei.health",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.tei.health",
      "version": "1.0.0",
      "description": "Check whether the local TEI server is reachable and ready, via chp.adapters.http.",
      "adapter": "chp.adapters.tei",
      "category": "ai"
    },
    {
      "id": "chp.adapters.tei.info",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.tei.info",
      "version": "1.0.0",
      "description": "Fetch the TEI server",
      "adapter": "chp.adapters.tei",
      "category": "ai"
    },
    {
      "id": "chp.adapters.tei.rerank",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.tei.rerank",
      "version": "1.0.0",
      "adapter": "chp.adapters.tei",
      "category": "ai"
    },
    {
      "id": "chp.adapters.vector.add",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.vector.add",
      "version": "1.0.0",
      "description": "Store a document for later semantic search.",
      "adapter": "chp.adapters.vector",
      "category": "ai"
    },
    {
      "id": "chp.adapters.vector.count",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.vector.count",
      "version": "1.0.0",
      "description": "Return the total number of stored documents.",
      "adapter": "chp.adapters.vector",
      "category": "ai"
    },
    {
      "id": "chp.adapters.vector.delete",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.vector.delete",
      "version": "1.0.0",
      "description": "Delete a document from the vector store.",
      "adapter": "chp.adapters.vector",
      "category": "ai"
    },
    {
      "id": "chp.adapters.vector.search",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.vector.search",
      "version": "1.0.0",
      "description": "Semantic search over stored documents.",
      "adapter": "chp.adapters.vector",
      "category": "ai"
    },
    {
      "id": "chp.adapters.vercel.cancel_deployment",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.vercel.cancel_deployment",
      "version": "0.1.0",
      "description": "Cancel a running or queued Vercel deployment.",
      "adapter": "chp.adapters.vercel",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.vercel.get_build_logs",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.vercel.get_build_logs",
      "version": "0.1.0",
      "description": "Get build log statistics for a deployment: line count and duration. Log text never in evidence.",
      "adapter": "chp.adapters.vercel",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.vercel.get_deployment",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.vercel.get_deployment",
      "version": "0.1.0",
      "description": "Get a single Vercel deployment: status, URL, build duration. Env var values never in evidence.",
      "adapter": "chp.adapters.vercel",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.vercel.list_deployments",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.vercel.list_deployments",
      "version": "0.1.0",
      "description": "List recent Vercel deployments: ID, state, URL, branch. Log content never in evidence.",
      "adapter": "chp.adapters.vercel",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.vercel.list_preview_urls",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.vercel.list_preview_urls",
      "version": "0.1.0",
      "description": "List Vercel preview deployments and their URLs.",
      "adapter": "chp.adapters.vercel",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.vercel.list_projects",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.vercel.list_projects",
      "version": "0.1.0",
      "description": "List Vercel projects: IDs and names only.",
      "adapter": "chp.adapters.vercel",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.vercel.promote_deployment",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.vercel.promote_deployment",
      "version": "0.1.0",
      "description": "Promote a deployment to production. High risk — requires explicit deployment_id and project_id.",
      "adapter": "chp.adapters.vercel",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.vercel.trigger_deploy",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.vercel.trigger_deploy",
      "version": "0.1.0",
      "description": "Trigger a new Vercel deployment from a git ref. Env var values never in evidence.",
      "adapter": "chp.adapters.vercel",
      "category": "cloud"
    },
    {
      "id": "chp.adapters.vllm.chat",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.vllm.chat",
      "version": "1.0.0",
      "adapter": "chp.adapters.vllm",
      "category": "ai"
    },
    {
      "id": "chp.adapters.vllm.generate",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.vllm.generate",
      "version": "1.0.0",
      "adapter": "chp.adapters.vllm",
      "category": "ai"
    },
    {
      "id": "chp.adapters.vllm.list_models",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.vllm.list_models",
      "version": "1.0.0",
      "description": "List models served by the local vLLM server (OpenAI /v1/models), via chp.adapters.http.",
      "adapter": "chp.adapters.vllm",
      "category": "ai"
    },
    {
      "id": "chp.adapters.webhook.ingest",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.webhook.ingest",
      "version": "1.0.0",
      "description": "Verify a webhook then normalize it into a CHP event envelope.",
      "adapter": "chp.adapters.webhook",
      "category": "network"
    },
    {
      "id": "chp.adapters.webhook.verify",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.webhook.verify",
      "version": "1.0.0",
      "description": "Verify a webhook HMAC signature (constant-time).",
      "adapter": "chp.adapters.webhook",
      "category": "network"
    },
    {
      "id": "chp.adapters.workflow.cancel",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.workflow.cancel",
      "version": "1.0.0",
      "description": "Cancel a running workflow. No-op if already in a terminal state.",
      "adapter": "chp.adapters.workflow",
      "category": "infra"
    },
    {
      "id": "chp.adapters.workflow.get_status",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.workflow.get_status",
      "version": "1.0.0",
      "description": "Get the current status and step history of a workflow.",
      "adapter": "chp.adapters.workflow",
      "category": "infra"
    },
    {
      "id": "chp.adapters.workflow.list",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.workflow.list",
      "version": "1.0.0",
      "description": "List workflow executions with optional status and type filters.",
      "adapter": "chp.adapters.workflow",
      "category": "infra"
    },
    {
      "id": "chp.adapters.workflow.record_step",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.workflow.record_step",
      "version": "1.0.0",
      "description": "Record a step outcome against a running workflow.",
      "adapter": "chp.adapters.workflow",
      "category": "infra"
    },
    {
      "id": "chp.adapters.workflow.submit",
      "capability_uri": "chp://capabilityhostprotocol.com/chp.adapters.workflow.submit",
      "version": "1.0.0",
      "description": "Submit a new workflow execution. Returns a workflow_id.",
      "adapter": "chp.adapters.workflow",
      "category": "infra"
    }
  ]
}