ProveCartVerified Agent
Archived version — ACF v0.1. The current discussion draft is ACF v0.2. This v0.1 text is kept published, unchanged, so the v0.1 → v0.2 delta stays inspectable.
Download this version: Markdown · PDF · Conformity JSON Schema (v0.2 draft): acf-v0.2.schema.json · Profile declaration example: profile-declaration-example.json · Reference implementation: api.provecart.com

Agent Correction Format (ACF) — v0.1

An open proposal by ProveCart. Status: proposal, version 0.1, published 2026-11-04. Canonical page: https://provecart.com/standards/correction-format Reference implementation: the ProveCart verification API (https://api.provecart.com), where this format is live today.

Name note: "ACF" in this document means only the Agent Correction Format defined here. It is not affiliated with ACF Standards (the Agent Certification Framework) or any other body using the same initials.

1. Purpose

Payment and booking standards for AI agents can prove who an agent is and that a purchase was approved. They do not define what a checker should say to an agent when the thing the agent built does not match what the customer asked for. In practice, a stopped agent gets a bare refusal and cannot repair its own work.

ACF defines that missing message: a machine-readable correction payload that travels with a negative or uncertain verdict and tells the agent, per failed dimension, what is wrong, what was expected, what was submitted, and what action would fix it — plus the rules for retrying, for escalating to the buyer, and for proving later what happened.

The format is deliberately small. It describes the mismatch only. It never describes the checker's internal method: no scores, no thresholds, no matching internals. Expected and actual values only.

ACF is published as an open proposal. Any checker, agent framework, or store may emit or consume it. ProveCart invites adoption, implementation reports, and corrections to this document; the format is versioned (Section 12) and changes will be published here first.

2. Roles and terms

3. The verdict object

A check returns a single JSON object:

Field Presence Meaning
verdict always MATCH, REVIEW, or BLOCK
results always Per-dimension results (below)
record_id always Identifier of the sealed evidence record for this check
verdict_token always Signed token binding this verdict to its record (Section 8)
corrections only when non-empty The ACF correction array (Section 4)
max_attempts when corrections is present Suggested retry budget for the correction loop; the reference value is 3
subject hash (e.g. cart_hash) implementation-defined Hash of the subject as checked

Verdict semantics:

Each entry of results is:

{
  "dimension": "price",
  "status": "hard_fail",
  "reasons": ["total on the mandate basis (grand_total) exceeds the ceiling: compared figure 378.0 ... vs ceiling 300.0 USD."],
  "details": { }
}

4. The corrections array

Present only on REVIEW or BLOCK, and only when at least one failing dimension is agent-correctable. Each entry:

Field Type Meaning
dimension string The failed dimension this correction belongs to
action string The fix to perform, from the closed vocabulary of Section 4.1
reason string The human-readable reason, identical to the dimension's reason text
expected any The value the instruction reference requires (scalar, or an object such as {"size": "65 inch", "unit": "inch"})
actual any The value found in the subject
item string, optional The subject line item concerned, named exactly as submitted
field string, optional The subject field concerned (booking and reservation dimensions)

Severity is expressed structurally in v0.1, not by a dedicated field: a correction inherits the severity of its dimension's status (hard_fail = blocking, soft_fail = review) under the response's overall verdict. A per-correction severity field is reserved for a future version; consumers must not require it.

4.1 Action vocabulary (closed list, v0.1)

Order (cart) subjects:

Action Dimension(s) Meaning
remove_item item_match Remove a line item the instruction never asked for
replace_item item_match, category, brand, specification Replace the named item with one that conforms
change_variant variant Change the named attribute (color, size, capacity, model) to the expected value
reduce_quantity quantity Reduce total quantity to at most the expected value
reduce_total price Bring the compared total to at most the ceiling (expected)
change_currency currency Re-price the subject in the expected currency

Booking subjects:

Action Meaning
correct_traveler_name Correct the traveler name to the expected name
change_airport Use the expected airport (no silent substitution, including within a metro)
change_travel_date Move the leg or stay to the expected date
change_departure_time Move the departure to the expected time
add_itinerary Add the missing leg or stay
rebuild_itinerary Rebuild the itinerary so connections and sequence conform
change_cabin Book the expected cabin / fare class
change_fare_terms Book terms matching the expected refundability / change rules
add_hotel_stay Add the missing hotel stay
change_room Change the room selection (type, occupancy, dates) to the expected value
reduce_total Bring the all-in total to at most the ceiling
change_currency Re-price in the expected currency

Reservation subjects:

Action Meaning
change_provider Use the expected provider
change_location Use the expected location / branch
change_date Move the reservation to the expected date
change_time Move the start to the expected time (a tolerance applies only where the instruction reference states one)
change_party_size Set the party size to the expected value
correct_reservation_name Correct the name on the reservation
reduce_deposit Bring the deposit to at most the expected amount
reduce_total Bring the amount to at most the ceiling
change_cancellation_terms Book cancellation terms matching the expected rules

New actions may be added in minor versions; consumers must ignore actions they do not recognize and treat the correction as not auto-applicable.

5. Non-correctable failures

Some failures cannot be repaired by editing the subject: an instruction reference that is missing, unsigned, tampered with, or expired; an excluded merchant; an exhausted standing budget. For these, the checker:

so an agent does not loop retrying an unfixable subject. In the reference implementation the non-correctable dimensions are mandate, mandate_signature, mandate_expiry, merchant, standing_budget, and engine_error (a checker-side failure, which fails safe to REVIEW).

6. The retry contract

  1. A corrected subject is submitted as a new check against the same instruction reference. The resubmission carries previous_record_id, the record_id of the attempt it supersedes. Every attempt is sealed as its own evidence record; earlier verdicts are never rewritten. The chain of attempts — refusal, correction, re-check — is itself the dispute evidence.
  2. max_attempts in the verdict object is the checker's suggested budget for the loop (reference value 3). Exhausting it is not a verdict; the agent stops and escalates.
  3. Buyer-approval escalation. An agent may auto-apply only corrections that bring the subject into conformity with the signed instruction reference. Any change that would go beyond what the buyer authorized — paying more than the ceiling, accepting a materially different product, name, date, or terms than instructed — is never an auto-fix: the check returns REVIEW, and the agent must ask the buyer and proceed only with a fresh instruction or explicit approval.
  4. A corrected subject that verifies MATCH completes the loop. The pair (or chain) of records is the "sale saved" evidence: proof the mistake was caught before payment, and fixed.

7. Provenance of the instruction reference

Corrections are only meaningful against an instruction the buyer actually gave. In the reference implementation:

Implementations may substitute an equivalent signed-instruction scheme (for example a Verifiable Intent / AP2 mandate) provided the signature is verified at check time and the reference is bound to the evidence record.

8. The sealed evidence pointer

Every check — pass, review, or block — is written to a tamper-evident, hash-chained evidence log before its verdict is relied on. The verdict object points back to it:

Gateways and booking systems integrating a checker must enforce the single-use, hold-bound rule on their side. It is part of the integration contract, not an implementation detail.

9. Worked example (from the reference implementation)

A buyer instructed: Sony WH-1000XM5 headphones, at most 1, ceiling $300. The agent built a cart with two BassPro Q9 headphones at $378 total. The checker returned BLOCK with three corrections (captured verbatim from the reference implementation's response; the per-dimension results array is elided here):

{
  "verdict": "BLOCK",
  "record_id": "…",
  "verdict_token": "…",
  "max_attempts": 3,
  "corrections": [
    {
      "dimension": "price",
      "action": "reduce_total",
      "reason": "total on the mandate basis (grand_total) exceeds the ceiling: compared figure 378.0 (merchandise 378.0 + tax 0.0 + shipping 0.0 + fees 0.0 = 378.0) vs ceiling 300.0 USD.",
      "expected": 300.0,
      "actual": 378.0
    },
    {
      "dimension": "quantity",
      "action": "reduce_quantity",
      "reason": "total quantity 2 exceeds mandate max_quantity 1",
      "expected": 1,
      "actual": 2
    },
    {
      "dimension": "item_match",
      "action": "replace_item",
      "item": "BassPro Q9 Wireless Headphones",
      "reason": "item conformity is indeterminate or partial for: BassPro Q9 Wireless Headphones (coverage in the indeterminate band routes to REVIEW)",
      "expected": "Sony WH-1000XM5 wireless noise cancelling headphones",
      "actual": "BassPro Q9 Wireless Headphones"
    }
  ]
}

The agent's conforming repair: replace the item with the instructed Sony headphones, quantity 1, total within $300 — resubmitted as a new check with previous_record_id set to the blocked attempt's record_id.

10. Conformance

11. Companion proposals (reserved, not specified)

Four adjacent gaps surfaced while defining this format. They are named here so the territory is marked; none is specified in v0.1, and this section creates no conformance requirements.

12. Versioning

This document is version 0.1. The canonical page (https://provecart.com/standards/correction-format) always serves the current version; every version is also published as an immutable file beside it, and an immutable file never changes after publication.


13. Licensing

The point of publishing a format is that other people build to it, so the terms are simple.


Version stamp Agent Correction Format (ACF) · Version 0.1 · Status: open proposal — current · Published 2026-11-04 · Editor: ProveCart · Canonical page: https://provecart.com/standards/correction-format · Reference implementation: the ProveCart verification API (https://api.provecart.com), live · Implementations known: 1 (the reference implementation) · Worked examples, implementer guide, and test vectors are published with this version.

Changelog - v0.1 — 2026-11-04. First publication: verdict object, corrections array with the closed action vocabulary for cart, booking, and reservation subjects, non-correctable dimensions, the retry contract with buyer-approval escalation, provenance of the signed instruction reference, and the sealed evidence pointer with its single-use, hold-bound token rule. - Errata — 2026-11-05. Restored the end of Section 10 and Sections 11–12, which were cut off in the first publication; added this version stamp and changelog. No normative change. - Licensing — 2026-11-04. Added Section 13: the format is royalty-free to implement (an essential-claims commitment in RAND-Z style), per the founder's decision of 2026-11-04. No change to the format itself.