# Agent Embassy Preflight Check

> Agent Embassy Preflight Check is a paid API for AI agents from aemb.pro, paid per call via x402, $0.25/call, status unknown (last checked 2026-10-12).

Validates an agent's intended action against policy rules, pays via USDC, and returns a signed receipt proving what was authorized and executed.

## Facts

- Endpoint: POST https://aemb.pro/v1/preflight/check?utm_source=zero.xyz
- Price: $0.25/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-12
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/agent-embassy-preflight-check-b88deffd
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_qwmlXzYD-AICSWo3zniQ0

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability agent-embassy-preflight-check-b88deffd -d '<json body>'
```

Example prompt: Before my agent calls server 'srv-abc123' to run the summarize-document operation, run a preflight check against my policies 'require namespace proof' and 'no undisclosed intermediary fee', using wallet 0xABCD...1234 on Base (eip155:8453), and give me a signed receipt proving what was authorized.

## When to prefer this

Choose this endpoint when you need a cryptographically provable, policy-gated authorization record before an agent takes an irreversible or costly action — especially when you need liability boundaries, spending policy enforcement, or an audit trail for autonomous agent operations on Base (eip155:8453). It is distinct from generic payment APIs because it combines policy evaluation, payment, and signed proof in one atomic call.

## Known failure modes

- Published or previously-used idempotency keys are rejected
- Missing required fields (server_id, operation) return validation errors
- Policy strings that cannot be evaluated return unresolvable-policy errors
- Insufficient USDC balance causes payment gate failure
- Replaying an idempotency key returns the original receipt even with different inputs
- Dry-run mode returns no verdict or proof bytes by design

## How this service works

Agents pay for work and prove what happened.

## Output

A JSON object containing a verdict (e.g. PROCEED_WITH_CAUTION or PROCEED), a receipt_id, receipt_version, the full authorization chain (request → authorization → action → proof → liability_boundary), the payer account address, and a status field. In dry-run mode, returns only field coverage and exact price quote with no proof bytes or signature.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "intent": {
   "type": "object",
   "description": "The intended invocation: operation (required), params_summary (sha256 of canonical params — params never travel), advertised_cost_usdc"
  },
  "policy": {
   "type": "array",
   "items": {
    "type": "string"
   },
   "description": "Your policy strings, e.g. [\"require namespace proof\", \"no unverified network egress\", \"fresh observation <24h\", \"no undisclosed intermediary fee\"] (max 20)"
  },
  "context": {
   "type": "object",
   "description": "principal_wallet + chain (eip155:8453). Optional."
  },
  "dry_run": {
   "type": "boolean",
   "description": "true = free dry-run: field-coverage map + exact price quote only. Intercepted before the payment gate; no proof bytes, no verdict, no signature."
  },
  "subject": {
   "type": "object",
   "description": "The spend target: server_id (required), artifact (mcpb:// | oci:// | https://), claimed_version"
  },
  "idempotency_key": {
   "type": "string",
   "description": "Idempotency key: UUID v4, client-generated, one per logical request. Replaying the same key on this tool returns the original receipt — the action is not re-run, and the first request's receipt wins even if you resend different inputs. Published example keys are rejected. Keys are scoped per tool and per payer account: a key never returns another wallet's receipt."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "tool": "preflight_check",
  "chain": [
   "request",
   "authorization",
   "action",
   "proof",
   "liability_boundary"
  ],
  "status": "complete",
  "account": "0x1111111111111111111111111111111111111111",
  "verdict": "PROCEED_WITH_CAUTION",
  "receipt_id": "emb_xyz789",
  "receipt_version": "embassy-receipt/2"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/agent-embassy-preflight-check-b88deffd/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from aemb.pro](https://www.zero.xyz/host/aemb.pro/llms.txt)
