# Peac

> Portable signed records for automated interactions.

- **Type:** MCP server
- **Install:** `agentstack add mcp-peacprotocol-peac`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [peacprotocol](https://agentstack.voostack.com/s/peacprotocol)
- **Installs:** 0
- **Category:** [Integrations](https://agentstack.voostack.com/c/integrations)
- **Latest version:** 0.1.0
- **License:** Apache-2.0
- **Upstream author:** [peacprotocol](https://github.com/peacprotocol)
- **Source:** https://github.com/peacprotocol/peac
- **Website:** https://www.peacprotocol.org

## Install

```sh
agentstack add mcp-peacprotocol-peac
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# PEAC Protocol

> Signed action records for AI agents, APIs, MCP tools, and gateways.

Automated systems already call APIs, run MCP tools, make gateway decisions, report payment events, and provision resources across system boundaries.

PEAC records those actions, decisions, and events as portable signed interaction records, so another party can verify what happened later without relying on screenshots, private logs, or unverifiable assertions.

**Record locally. Verify across boundaries.**

[](LICENSE)
[](https://github.com/peacprotocol/peac/releases)
[](https://www.npmjs.com/package/@peac/protocol)
[](https://github.com/peacprotocol/peac/actions/workflows/ci.yml)

## Start fast

- **Verify a sample offline:** [`docs/guides/offline-sample-index.md`](docs/guides/offline-sample-index.md)
- **Compare verification paths:** [`docs/guides/verification-options.md`](docs/guides/verification-options.md)
- **Wire PEAC into MCP, OpenTelemetry, or a gateway:** [`docs/guides/integration-patterns.md`](docs/guides/integration-patterns.md)
- **Choose by role:** [`docs/START_HERE.md`](docs/START_HERE.md)

## What PEAC records

PEAC is useful when a system does work and another party later needs to
verify what happened without trusting that system's logs.

| Event              | Familiar surfaces                                                                                     | Example record                                                                                                     |
| ------------------ | ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| API call           | Stripe-style APIs, Cloudflare Workers, Vercel functions, internal HTTP services                       | request, response, usage, access decision, policy-visible outcome                                                  |
| MCP tool run       | MCP servers, Smithery-listed tools, internal MCP servers                                              | tool input/output reference, tool result, issuer, timestamp, signature                                             |
| Agent action       | A2A handoffs, agent-framework steps, Microsoft AGT-style runtime events                               | action invoked, delegated, approved, denied, cancelled, or timed out                                               |
| Gateway decision   | Cloudflare, Portkey, Kong, API gateways, AI gateways                                                  | access, routing, export, or boundary decision reported by a gateway                                                |
| Payment event      | x402, paymentauth / MPP, ACP, AP2-style commerce flows                                                | payment request, authorization, settlement observation, mandate, dispute context                                   |
| Provisioning event | Stripe Projects-style provider setup, Vercel deployments, GitHub Actions, Terraform-managed resources | catalog, provider link, account, credential, budget, subscription, domain, deployment, or resource lifecycle event |

These are orientation examples, not partnership claims or exclusive
integration targets. PEAC records what those systems report; it does not
replace them.

PEAC does not make those decisions. It records what another system
reported, binds it to an issuer and time, and makes it portable for
verification.

## What a PEAC record preserves

A PEAC record is signed evidence about an interaction.

| Field             | Meaning                                                                                              |
| ----------------- | ---------------------------------------------------------------------------------------------------- |
| Facts             | what the producing system reported happened                                                          |
| Policy or context | the terms, policy, protocol, or configuration context that applied                                   |
| Result            | allowed, denied, completed, failed, observed, settled, disputed, or another profile-specific outcome |
| Time              | when the interaction was recorded                                                                    |
| Issuer            | which service, runtime, gateway, or agent system issued the record                                   |
| Signature         | a verifiable signature over the record                                                               |

A counterparty can verify the record locally with the issuer's public key
or through a self-hosted verifier. Records can also be exported into
portable bundles for audit, review, dispute, compliance, or incident
workflows.

## How it works

```text
1. A system performs work
   API call, MCP tool run, agent action, gateway decision,
   payment event, provisioning event, runtime observation, or audit event

2. The system issues a signed PEAC record
   facts + policy/context + result + time + issuer + signature

3. A counterparty verifies the record
   locally, in CI, or through a self-hosted verifier using issuer keys

4. The record travels
   audit review, dispute review, compliance workflow, incident report,
   exported bundle, or another system boundary
```

PEAC records what another system reported. It does not decide whether an
action was allowed, authenticate the actor, settle payment, operate the
runtime, or replace logs and traces.

Full loop: [`docs/HOW-IT-WORKS.md`](docs/HOW-IT-WORKS.md). Artifact
vocabulary (record, receipt, bundle, report):
[`docs/ARTIFACTS.md`](docs/ARTIFACTS.md). Where PEAC sits next to other
systems: [`docs/WHERE-IT-FITS.md`](docs/WHERE-IT-FITS.md). Protocol
scope: [`docs/WHAT-PEAC-STANDARDIZES.md`](docs/WHAT-PEAC-STANDARDIZES.md).

## Choose your path

| If you...                                       | PEAC helps you...                                                                                                                      | Start here                                                                                                                                                                                         |
| ----------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Run an API or metered service                   | issue signed records for requests, responses, usage, and policy-visible outcomes                                                       | [API Provider Quickstart](docs/guides/quickstart-api-provider.md)                                                                                                                                  |
| Build MCP tools or agent workflows              | attach records to tool runs, command execution, handoffs, lifecycle events, and agent actions                                          | [MCP Integration Kit](integrator-kits/mcp/README.md), [Integration patterns guide](docs/guides/integration-patterns.md), or `npx -y @peac/mcp-server`                                              |
| Build payment, gateway, or commerce flows       | preserve signed evidence around access, payment, settlement, mandate, gateway, and dispute events without operating the payment system | [MCP gateway records](docs/SOLUTIONS/mcp-gateway-receipts.md) or [Commerce evidence bundle](docs/SOLUTIONS/commerce-evidence-bundle.md)                                                            |
| Track provisioning or resource lifecycle events | record catalog, provider-link, account, credential, budget, subscription, domain, deployment, and resource events                      | [Provisioning lifecycle records](docs/SOLUTIONS/verify-agent-provisioning.md)                                                                                                                      |
| Need audit or review evidence                   | export portable records and bundles that can be referenced beside logs, traces, SIEMs, reports, and audit repositories                 | [Verification options](docs/guides/verification-options.md) or [Where PEAC fits](docs/WHERE-IT-FITS.md)                                                                                            |
| Need to verify a record                         | verify a signed PEAC record with the issuer's public key or a self-hosted verifier                                                     | [Verification options](docs/guides/verification-options.md), [Offline sample index](docs/guides/offline-sample-index.md), or [Agent Operator Quickstart](docs/guides/quickstart-agent-operator.md) |

Full path-by-role tree: [`docs/START_HERE.md`](docs/START_HERE.md).

## Quickstart: verify a sample offline

```bash
pnpm dlx @peac/cli samples generate -o ./s
pnpm dlx @peac/cli verify ./s/valid/basic-record.jws --public-key ./s/bundles/sandbox-jwks.json
```

Expected:

```text
Signature valid (offline).
```

For browser and self-hosted verifier paths, see [`docs/guides/verification-options.md`](docs/guides/verification-options.md). For the full shipped sample set, see [`docs/guides/offline-sample-index.md`](docs/guides/offline-sample-index.md).

## Quickstart: verify one record in code

```bash
npm install @peac/protocol @peac/crypto
```

```typescript
import { verifyLocal } from '@peac/protocol';

const recordJws = response.headers.get('PEAC-Receipt');

if (!recordJws) {
  throw new Error('Missing PEAC-Receipt header');
}

const result = await verifyLocal(recordJws, publicKey, {
  issuer: 'https://api.example.com',
});

if (!result.valid) {
  throw new Error(`${result.code}: ${result.message}`);
}

console.log(result.claims.iss, result.claims.kind, result.claims.type);
```

This quickstart shows the developer path for one record. Operational
latency and throughput baselines are tracked separately in
[`docs/SLO.md`](docs/SLO.md).

Node 24 tested, Node 22+ compatible. Go middleware and examples
supported (Go 1.26+). Python via API-first examples and OpenAPI-driven
flows.

## Where PEAC fits

PEAC is useful when an action crosses a system, organization, protocol,
agent, gateway, payment, provisioning, or audit boundary and the local
log is not enough.

| Surface                         | What PEAC adds                                                                                                 |
| ------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| APIs and HTTP services          | signed records for requests, responses, usage, and policy-visible outcomes                                     |
| MCP tools and agent workflows   | records for tool runs, command execution, handoffs, lifecycle events, and agent actions                        |
| Gateway and commerce systems    | records for access, payment, settlement, mandate, gateway, export, and dispute events                          |
| Provisioning systems            | records for provider links, accounts, credentials, budgets, subscriptions, domains, deployments, and resources |
| Runtime and evaluation systems  | portable observations from local runtime, policy, evaluation, and control systems                              |
| Observability and audit systems | verifiable records that complement logs, traces, SIEMs, reports, bundles, and audit repositories               |

PEAC does not replace those systems. It gives them a portable records
layer: what was reported, by whom, when, under which context, and with
which verifiable signature.

If you work around MCP, A2A, x402, paymentauth / MPP, ACP, AP2-style
commerce, UCP-style commerce, runtime governance, OpenTelemetry, or
internal platform workflows, PEAC is the signed-record layer beside
those systems, not a replacement for them.

## Why PEAC

Modern systems often need proof that travels beyond the system that
produced the log.

- Logs are local. PEAC records are portable and independently verifiable.
- Traces correlate execution. PEAC records preserve signed claims across
  organizational boundaries.
- Auth, policy, runtime, and payment systems decide whether actions may
  happen. PEAC records what another system reported happened.

## For reviewers and operators

PEAC is designed to be reviewed as protocol infrastructure, not as a
hosted control plane.

| Need                                      | Read                                                                         |
| ----------------------------------------- | ---------------------------------------------------------------------------- |
| Supported versions and disclosure process | [`SECURITY.md`](SECURITY.md)                                                 |
| Measured local verification baselines     | [`docs/SLO.md`](docs/SLO.md)                                                 |
| Stability classes and archived surfaces   | [`docs/STABILITY-CONTRACT.md`](docs/STABILITY-CONTRACT.md)                   |
| Compatibility and deprecation status      | [`docs/COMPATIBILITY_MATRIX.md`](docs/COMPATIBILITY_MATRIX.md)               |
| External standards references             | [`docs/STANDARDS_LEDGER.md`](docs/STANDARDS_LEDGER.md)                       |
| Release-line invariant snapshots          | [`docs/baselines/`](docs/baselines/)                                         |
| Verification paths                        | [`docs/guides/verification-options.md`](docs/guides/verification-options.md) |
| Offline sample records                    | [`docs/guides/offline-sample-index.md`](docs/guides/offline-sample-index.md) |

The reference verifier is self-hostable. Verification can also be
performed locally when the record and issuer public key are available.

## Use cases

Practical recipes under [`docs/SOLUTIONS/`](docs/SOLUTIONS/):

- [API record issuance](docs/SOLUTIONS/api-receipt-issuance.md)
- [MCP tool-call records](docs/SOLUTIONS/mcp-tool-call-receipts.md)
- [MCP gateway records](docs/SOLUTIONS/mcp-gateway-receipts.md)
- [Agent action records](docs/SOLUTIONS/verify-agent-action.md)
- [Gateway export records](docs/SOLUTIONS/verify-gateway-export.md)
- [Commerce mandate records](docs/SOLUTIONS/verify-commerce-mandate.md)
- [Commerce evidence bundle](docs/SOLUTIONS/commerce-evidence-bundle.md)
- [Cloudflare x402 + PEAC](docs/SOLUTIONS/cloudflare-x402-peac.md)
- [Runtime evidence export](docs/SOLUTIONS/runtime-evidence-export.md)
- [Provisioning lifecycle verification](docs/SOLUTIONS/verify-agent-provisioning.md)
- [Regulatory audit trail](docs/SOLUTIONS/regulatory-audit-trail.md)

## Try it in 5 minutes

- Verify a record locally with `verifyLocal()` or `pnpm dlx @peac/cli verify`.
- Generate sample records and verify one offline with just a public key:
  ```bash
  pnpm dlx @peac/cli samples generate -o ./s
  pnpm dlx @peac/cli verify ./s/valid/basic-record.jws --public-key ./s/bundles/sandbox-jwks.json
  ```
- Start the MCP server: `npx -y @peac/mcp-server`.

The `pnpm dlx @peac/cli ...` and `npx ...` commands above run without cloning this repository. The examples below are repo-local: clone the repository first, then run:

```bash
pnpm install --frozen-lockfile
pnpm build
pnpm demo:all
```

`pnpm demo:all` runs the start-here examples end to end. The individual commands below are optional targeted demos you can run after that setup.

- Run the minimal example: `pnpm --filter @peac/example-minimal demo`.
- Run the MCP gateway records example:
  ```bash
  pnpm --filter @peac/example-mcp-gateway-receipts demo
  pnpm --filter @peac/example-mcp-gateway-receipts demo:tamper
  ```
- Run the provisioning

…

## Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [peacprotocol](https://github.com/peacprotocol)
- **Source:** [peacprotocol/peac](https://github.com/peacprotocol/peac)
- **License:** Apache-2.0
- **Homepage:** https://www.peacprotocol.org

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/mcp-peacprotocol-peac
- Seller: https://agentstack.voostack.com/s/peacprotocol
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
