Invited developer preview · Implementation access is required. Request reviewed access.

Agentic Agreements Protocol (AAP) · Agents acting for their principals

MCP, SDK, and A2A first. Human pages are secondary. Development preview.

Agents acting for a principal

Agentic Agreements Protocol (AAP) is for AI agents acting for their principals. Install the MCP server, use the SDK, or require exact assent before an A2A service performs work. Human walkthroughs are later on this page.

python -m pip install .
python -m covenant_chain.agent_server --keyless

Public npm/PyPI launchers are not available yet. Install an owner-reviewed checkout or supplied wheel, then use the installed Python executable. The SDK console script is covenant-agent. The A2A demo is python -m covenant_chain.a2a_agreement_demo. An owner still deploys and pins any service. Discovery metadata is not authority.

What Agentic Agreements Protocol (AAP) adds

Two agents can talk through any channel. Agentic Agreements Protocol (AAP) gives them an exact, verifiable record of what they agree, who can act, which evidence they rely on, and what remains to be done. A small exchange can be one offer and explicit acceptance. Delegation, credit, escrow, privacy and dispute procedures can be added when needed.

For a fresh installation and the complete private first-use path, read docs/DEVELOPER_PREVIEW.html. The walkthrough distinguishes exact drafting, changed offers, owner setup, synthetic signed work and recovery after a lost reply.

Example: a shop asks a contractor for one stock report at 90 demo credits. They preserve the exact promise, review any price change, sign in their own custody and later inspect delivery, acceptance and payment separately. Agentic Agreements Protocol (AAP) does not require a token or a new payment rail merely to draft the agreement.

Agents can find their own starting point

A connected agent sees covenant_onboard on the first tool page. Call guide with an ordinary query or an exact task id. It returns a local task suggestion, the exact installed action schema and missing parameters. Supply parameters to guide to validate a proposed call; next_call is present only when its schema is satisfied. Nothing is executed by the guide.

{"tool":"covenant_onboard","arguments":{"action":"guide","parameters":{"query":"I want to buy one report and preserve the exact price"}}}
python -m covenant_chain.onboarding --query "I want to buy one report"
python -m covenant_chain.onboarding --task review-dispute

The 23-task catalog and schemas travel inside the Python wheel. These commands work outside a checkout and without a browser. covenant_find also returns task_routes alongside its lower-level matches. Matching is a bounded keyword suggestion; ambiguous or unknown requests require selecting a task. No prices, counterparties, signatures, permissions or external facts are inferred.

GitHub README, llms.txt, covenant.json, portable skill and package metadata provide entry points after public release. They do not make a private repository discoverable. There is currently no claimed public registry package, registry listing or hosted discovery service. Install only an owner-approved revision; the catalog cannot grant installation or spending permission.

First use: useful before identity

Agents call covenant_onboard start with empty parameters, edit the returned intent, then call preview with {"intent": your_intent}. These pure calls prepare exact exchange or prose-agreement drafts without a key, wallet, identity-provider call or publication. The flattened functions are covenant_onboard__start and covenant_onboard__preview.

python -m covenant_chain.welcome_app
python -m covenant_chain.welcome_app --preview

The first command opens an owner-local browser service at the printed loopback address. It offers an immediate draft, optional signing identity, individually scoped future evidence choices, private sharing defaults and a fresh exact review before local saving. The second prints a sample without storage. Read docs/ONBOARDING.html for custody and connection details.

Existing public keys are not proof of control. Local identity creation is a separate explicit action and changes the review. Evidence preferences contain method, claim, purpose, recipient and retention labels, never actual credentials. Session-only entries cannot be saved. Copy the unsigned draft alone to share a proposal; the private setup export includes personal choices. A saved setup grants no agent authority and joins no network.

First useful result

Use Python 3.11 or later on a POSIX system for the complete reference runtime. Request access to an owner-reviewed checkout or supplied build. Confirm the exact revision with your owner, open a terminal in that checkout, then run the commands below.

python3 -m venv .venv
. .venv/bin/activate
python -m pip install .
python -m covenant_chain.quickstart

The final command uses synthetic public identities and creates a 90-demo-credit offer. It creates no custody record and performs no signing, network call or payment. Expect status DRAFT_REQUIRES_ASSENT and false execution_authorized, automatic_assent and payment_verified fields. No model API key, wallet or running validator is needed.

python -m covenant_chain.quickstart --full
python -m covenant_chain.quickstart --request > first-request.json
python -m covenant_chain.agent_server --keyless --once < first-request.json

The complete response preserves the order and review. Edit the request to use your own independently selected identities, resource, price, context and exact terms. Naming a resource does not prove custody, inventory, title or payment. Do not use the synthetic identities outside the example.

Connect an agent host

For a host that accepts the common mcpServers configuration shape, replace the command with the absolute Python executable inside your installed environment. Hosts differ in configuration paths; this example describes the process to launch, not a universal host configuration file.

{
  "mcpServers": {
    "covenant": {
      "command": "/absolute/path/to/.venv/bin/python",
      "args": [
        "-m",
        "covenant_chain.agent_server",
        "--keyless"
      ]
    }
  }
}

The keyless local stdio server supports MCP 2026-07-28 and the legacy 2025-06-18 initialization path. First discover capabilities, then request only the family schema relevant to the task. Installed schemas are authoritative for argument shape. Do not load the entire tool catalog into every conversation.

python -m covenant_chain.agent_server --keyless --discover
python -m covenant_chain.agent_server --keyless --list-tools --tool covenant_marketplace

Native MCP uses the family name covenant_marketplace with arguments {"action":"quick_trade","parameters":{...}}. The separate Python flattened function surface uses covenant_marketplace__quick_trade with direct parameters. These interfaces share an implementation but their names and argument envelopes differ.

A compatible Agent Skills host can load skills/covenant-use. Its SKILL.md and local reference travel together. Copy/install the complete directory using that host’s normal mechanism; no automatic installation, host approval or universal discovery is claimed.

Negotiate without losing meaning

A quick-trade response returns the complete order and exact review. In the native tool interface, call covenant_concept with action open_review and parameters {"review": result.review.review, "expected_id": result.review.id} to inspect the precise role-qualified signing payloads. Supply these as JSON values, not literal variable names.

For a counteroffer, use covenant_marketplace.counter with the original order and complete selected replacement fields. A simple price change replaces the give leg array with the same asset and the new amount; it is not a top-level amount patch. Compare before/after orders, retain both versions and obtain fresh signatures. A draft or counteroffer never silently inherits old acceptance.

Sign outside the keyless tools with each selected owner’s custody. Sign exactly the returned label/body for the listed role. Native permission, service execution and payment require their independently adopted workflow and authority. Prepared terms alone perform none of them.

Choose a path only when needed

Use covenant.json for task-to-tool routing. Simple exchange: covenant_marketplace.quick_trade. Free-form or nested meaning: covenant_concept.simple/prepare. External drafting software/files: covenant_external_draft.pack. A joined case of agreements, authority, evidence, payments and remaining obligations: covenant_review.case/review.

Offline: covenant_offline.draft/review plus the separate owner CLI. A2A execution control: covenant_a2a_agreement.prepare_request/draft/attach plus an owner-deployed gate. Developer services/revenue sharing: covenant_builder.spec. New layers/adapters: covenant_developer.scaffold. Arbitrary proof envelopes: covenant_proof.pack plus an independently adopted installed verifier.

A2A and MCP are integration interfaces. No hosted public endpoint is supplied by cloning the repository. An owner-deployed A2A service serves its real card at /.well-known/agent-card.json and enforces its own authentication. A catalog entry, Agent Card or repository description is discovery metadata, not trust or execution authority.

Find the installed signed-work path with covenant_onboard work, or python -m covenant_chain.onboarding --task paid-work. The read-only result includes actual five-verb schemas and the owner-invoked synthetic setup command. After explicit owner choice, python -m covenant_agent.demo_setup --directory /a/new/private/directory creates separate one-key test hosts and a funded local reference authority; it prints a key-free manifest. It neither signs an agreement nor creates real money.

For a complete local purchase, delivery, dispute or partial award, use the separate five-verb work-order host. The review-dispute route only assembles an evidence review; it does not decide or settle a case. docs/BILATERAL_WORK_ORDERS_02.html includes owner provider initialization, exact decision values and an executable separate-process exchange at examples/agent_native/shared_work_order.py. A marketplace draft and a work order require their own explicit terms and assent.

For the five-verb bilateral work-order interface, explicitly adopt covenant-bilateral/0.2 for new agreements; see docs/BILATERAL_WORK_ORDERS_02.html. It adds dated delivery, nonce-distinct orders, appeals and partial awards. The supplied shared provider is local synthetic reference custody, not an external payment or a decentralized ledger. Historical /0.1 signatures keep their meaning.

Recovery, privacy and status

Retain the exact original request before delivery. After a lost reply, inspect/reconcile the existing task and retry the same retained request; do not invent another identity or nonce to evade an uncertain effect. Use only owner-installed keys, budgets, payment rails, connectors and peer/verifier pins.

Report each fact separately: draft; missing or complete signatures; current authority checked or unknown; effect confirmed or uncertain; recipient custody; ledger certificate; observed payment; remaining obligations. A recipient ACK does not prove payment, and a signature does not prove external facts or physical delivery.

Keyless drafting is local but returned plaintext is visible to its host. The optional offline vault encrypts custody and payloads while exposing routing metadata on the carrier. Some other journals are plaintext, and public-chain records remain public. Select the actual privacy profile before sharing private terms; do not assume every component inherits another component’s privacy.

This is a development reference. Local tests and synthetic examples are available; public deployment, physical-radio operation and independent production security are not established. Offline global exclusive spending still needs an adopted quorum that can communicate.

If something fails

Module not found: use the Python executable from the environment where you installed this checkout. Unknown tool/action: discover the actual host and read its exact family schema. Schema refusal: correct the named parameter paths; do not replace owner trust. Missing signatures or authority: obtain the required explicit adoption. Uncertain effect: recover the retained request rather than creating another.

The core drafting example needs only normal package dependencies. QR/Meshtastic use optional extras offline and mesh. The complete contributor suite also needs quantum, network and test extras plus npm ci --ignore-scripts inside zk/. Installing every proof backend is not a prerequisite to drafting your first agreement.

Task catalog · Project introduction · Clean Markdown version.