---
title: "§1 Terminology"
description: "Normative definitions of every object in the protocol, and what each is explicitly not."
canonical: https://harnesscontextprotocol.io/docs/specification/terminology
---

# §1 Terminology

> Normative definitions of every object in the protocol, and what each is explicitly not.

The following terms have the meanings given here throughout this specification.

## 1.1 Participants

**Harness**: The system driving an agent. In HCP the harness is the runtime that
installs packs. An MCP server, an agent's instruction file, and a dashboard are
not harnesses.

**Runtime**: The component that loads packs, evaluates grants, mints Binding,
executes Adapters, routes Sense, and reports availability. MAY be proprietary. The
runtime is an implementation and is distinct from the protocol.

**Host**: An agent product that adopts HCP and presents pack commands to an agent
loop. Examples: an IDE assistant, a coding agent, a tool-loop library. A host
invokes the runtime and does not replace it.

**Invoker**: The party running a command: human, agent, API, or UI. An Invoker
carries a Principal. An Invoker MUST NOT redefine Policy or Binding.

**Principal**: The acting identity on an exec. A runtime concept. Kinds
(informative): `human`, `service`, `agent`, `mothership`. A Principal is never a
pack field.

## 1.2 The unit

**Harness Pack** (**pack**): A directory containing `surface.json`, `policy.json`,
and `HARNESS.md`, identified by one `pack_id`. The install unit. A pack is not a
connector, a UI surface, an MCP server, or an agent teaching pack.

**Manifest**: `surface.json`. Declares identity, adapter, Binding mode, commands,
and optional triggers. The filename is retained for compatibility and does not
refer to a UI surface.

**Policy**: `policy.json`. One entry per command and per trigger: `operation`,
`privacy.land`, and optional `confirm`.

**Skill**: `HARNESS.md`. The pack's teaching document. Copied to a `SKILL.md`
on activate.

**Pack id** (`pack_id`): The pack's stable identifier. Equal to manifest `id` and
Policy `surface_id`. `surface_id` is a legacy alias of `pack_id` on the wire.

**Plane**: `runtime` (end-user capability, default) or `control` (operator
capability). A control-plane pack is a distinct pack.

## 1.3 The loops

**Execute**: The inbound loop: an Invoker runs a command. Announcements that the
world changed belong to Sense.

**Command**: A closed, named operation the pack declares. Identified by
`verb_key`. Manifest map `verbs` and wire field `verb_key` are retained names and
mean *command*. A command is not a verb ontology, a PATH wrap, or a mega-command
`run`.

**Twin face**: The property that a command's CLI form and JSON envelope are the
same command under the same Policy, Binding, and Adapter.

**Sense**: The outbound loop: the pack announces a world change. Pull observation,
polling, and uptime monitoring are not Sense.

**Trigger** (**stimulus**): One Sense declaration, identified by a stimulus ref.
A trigger is not a command, a job table, or an inbox product.

**Sink**: Where a runtime records delivered triggers. A runtime concept.

## 1.4 Rules and credentials

**Operation**: Policy side-effect class: `read` or `write`.

**Land**: Policy privacy scope: `personal` (actor-private), `brain` (shared
project context), or `local` (a local workspace directory). Land is not a tenant
id.

**Confirm**: Policy gate on a write. The runtime MUST refuse the command unless
the envelope carries explicit confirmation.

**Binding**: The credential mode a pack requires and the path by which a runtime
mints it. Binding is neither a secret in the pack nor a Principal.

**Binding mode**: `public`, `user`, `local`, `mothership`, `mock`.

**Hub**: The runtime component that mints credentials. Named in the manifest as
`keyring`, `local-credential`, `public`, or `none`. Its implementation is not an
HCP type.

**Family**: A manifest field grouping packs that share one consent.

**Capability**: A runtime grant axis: `pack.install`, `pack.connect`,
`verb.exec.read`, `verb.exec.write`, `sense.enable`.

**Tenant** / **Project**: Runtime scope. Tenant comes from the Principal's
session; Project is required when land is `brain`.

## 1.5 Execution

**Adapter**: How a command reaches the world: `wrap`, `composite`, `openapi`, or
`sense_only`. An implementation detail beneath the pack's identity.

**Wrap**: An Adapter that spawns an existing CLI with a rendered argv.

**Pass-through**: An HCP/1.1 wrap bootstrap declaring `allowedSubcommands` and
`maxArgv`. Non-conforming as a destination.

**Sandbox**: The default execution posture: bin allow-list, cwd jail, no ambient
credentials. **Native-local** is the explicit opt-out.

**Envelope**: The JSON exec request `{ pack_id, verb_key, args }`.

**Result envelope**: `{ ok, pack_id, verb_key, result?, error? }`.

## 1.6 Lifecycle

**Install**: Placing a pack in the runtime store.

**Activate**: Placing an installed pack on a harness session.

**Connect**: Minting Binding for an activated pack.

**Availability**: The report of `installed`, `activated`, `connected`, and
per-command `executable`.

**Store**: The runtime's pack storage. In the reference runtime, `$HCP_HOME`.

## 1.7 Projections

**Projection**: Any surface generated from a pack: CLI face, JSON face, Skill
copy, host tool catalog, MCP export. Projections are derived; the pack is the
source of record.

**Four faces**: CLI, JSON, Skill, and optional MCP. They MUST share `verb_key`.

## 1.8 Terms that are not HCP types

*Informative.* The following appear in products built on HCP and are explicitly
outside the protocol: Connector, tenant id in the pack, inbox ledger, object-sync
job, catalog SQL schema, credential hub table names, UI widget catalog, role
table, IdP API.

## Sitemap

- [Documentation](https://harnesscontextprotocol.io/docs)
- [Packs](https://harnesscontextprotocol.io/packs)
- [Glossary](https://harnesscontextprotocol.io/docs/reference/glossary)
- [llms.txt](https://harnesscontextprotocol.io/llms.txt)
- [llms-full.txt](https://harnesscontextprotocol.io/llms-full.txt)
- [OpenAPI](https://harnesscontextprotocol.io/openapi.json)
- [MCP](https://harnesscontextprotocol.io/mcp)
