---
subject: https://integra-lens-merch-live.demos.integraledger.net
requested: https://integra-lens-merch-live.demos.integraledger.net/
stages: [Discoverable, Agreeable, Transactable, Provable]
ceiling: [Discoverable, Agreeable, Transactable, Provable]
rubric: 0.3.0
rubric_sha256: 0x5710a7d11733b7ca2ba68bc67ecd7b859eb79847e314ef8eedb4301d5f51ce51
probed: 2026-10-03T23:41:26.099Z
engine: lens@0.1.0+dev
fingerprint: 0x36694bacd6cb915885e1cef530269778639b921e2828e448318d985af59e7d06
report_url: https://lens.integraledger.com/reports/0x36694bacd6cb915885e1cef530269778639b921e2828e448318d985af59e7d06.json
---

# integraledger.net

**Provable** · Checked 3 Oct 2026, 23:41 UTC

AI agents can prove what was agreed, from the record the payment carries.

| Stage | Needed checks |
|---|---|
| **Discoverable** ✓ Reached | `✓✓` All 2 needed checks pass |
| **Agreeable** ✓ Reached | `✓✓✓✓✓✓✓✓✓` All 9 needed checks pass |
| **Transactable** ✓ Reached | `✓✓` All 2 needed checks pass |
| **Provable** ✓ Reached | `✓✓✓` All 3 needed checks pass |

Every stage is reached.

[See the whole plan · 4 fixes](https://lens.integraledger.com/reports/0x36694bacd6cb915885e1cef530269778639b921e2828e448318d985af59e7d06/plan)

## Discoverable · Reached

**Can AI agents find what you sell?** An agent starts with your address and nothing else.

### Findings · 2 of 2 pass

| Check | Status | What Lens found |
|---|---|---|
| **Catalog** `✓┃✓✓` | 1 of 1 pass |  |
| Product details software can read | ✓ Passed |  |
| **Access** `✓` | 1 of 1 pass |  |
| Letting honest AI agents in | ✓ Passed |  |

### Beyond the minimum

Checks this stage grades but does not require.

| Check | Status | What Lens found |
|---|---|---|
| **Catalog** `✓✓` | 2 of 2 pass |  |
| A product list AI agents can download | ✓ Passed |  |
| An agent interface that answers product searches | ✓ Passed |  |

### Commercial certainty

How sure a buyer's agent can be of the deal, beyond what the stage needs. Scored apart from the stage.

| What a buyer's agent needs | Level | Missing |
|---|---|---|
| Keeps working after updates | `✓✓✓✕` 4 of 5 | Missing: the versions still supported. |

## Agreeable · Reached

**Do AI agents know what they would agree to?** Before it commits someone's money, an agent needs the seller, the exact product, the full price and the terms.

### Findings · 9 of 9 pass

| Check | Status | What Lens found |
|---|---|---|
| **Terms** `✓✓✓✓┃✓✓` | 4 of 4 pass |  |
| Terms of sale AI agents can read | ✓ Passed |  |
| Dated terms | ✓ Passed |  |
| Versioned terms | ✓ Passed |  |
| Terms that stay the same | ✓ Passed |  |
| **Seller** `✓` | 1 of 1 pass |  |
| Your legal name, machine-readable | ✓ Passed |  |
| **Product** `✓` | 1 of 1 pass |  |
| Product identifiers | ✓ Passed |  |
| **Price** `✓✓✓┃✓` | 3 of 3 pass |  |
| Prices software can read | ✓ Passed |  |
| Whether tax is included | ✓ Passed |  |
| The total before committing | ✓ Passed |  |

### Beyond the minimum

Checks this stage grades but does not require.

| Check | Status | What Lens found |
|---|---|---|
| **Terms** `✓✓` | 2 of 2 pass |  |
| Terms in a clean format | ✓ Passed |  |
| The same terms everywhere | ∅ Doesn't apply |  |
| Terms locked by a fingerprint | ✓ Passed |  |
| **Price** `✓` | 1 of 1 pass |  |
| How long a price holds | ✓ Passed |  |
| **Agreement record** `✓✓` | 2 of 2 pass |  |
| A checkable record of each agreement | ✓ Passed |  |
| The terms inside each agreement | ✓ Passed |  |

### Commercial certainty

How sure a buyer's agent can be of the deal, beyond what the stage needs. Scored apart from the stage.

| What a buyer's agent needs | Level | Missing |
|---|---|---|
| Returns and disputes | `✕✕✕✕` 1 of 5 | Missing: a returns policy page, a returns policy AI agents can read, the return window, a dispute route. |

## Transactable · Reached

**Can AI agents buy without a browser?** An agent needs a checkout it can complete without a browser, and a way to pay built for agents.

### Findings · 2 of 2 pass

| Check | Status | What Lens found |
|---|---|---|
| **Purchase** `✓✓┃✓` | 2 of 2 pass |  |
| Order links AI agents can build | ✓ Passed |  |
| A checkout for AI agents | ✓ Passed |  |

### Beyond the minimum

Checks this stage grades but does not require.

| Check | Status | What Lens found |
|---|---|---|
| **Purchase** `✓` | 1 of 1 pass |  |
| A way for AI agents to pay | ✓ Passed |  |

### Commercial certainty

How sure a buyer's agent can be of the deal, beyond what the stage needs. Scored apart from the stage.

| What a buyer's agent needs | Level | Missing |
|---|---|---|
| In stock, with a delivery date | `✕✕✕✕` 1 of 5 | Missing: availability, stock level, delivery time, delivery rates. |

## Provable · Reached

**Can both sides prove what was agreed?** With no person watching, the proof of the deal has to travel with the payment.

### Findings · 3 of 3 pass

| Check | Status | What Lens found |
|---|---|---|
| **Agreement record** `✓✓` | 2 of 2 pass |  |
| A checkable record of each agreement | ✓ Passed |  |
| The terms inside each agreement | ✓ Passed |  |
| **Binding** `✓┃✓✓` | 1 of 1 pass |  |
| The agreement inside the payment | ✓ Passed |  |

### Beyond the minimum

Checks this stage grades but does not require.

| Check | Status | What Lens found |
|---|---|---|
| **Product** `✓✕◌` | 1 of 3 pass |  |
| Identifiers that lead somewhere | ✓ Passed |  |
| Signed product records | ✕ To fix · Outside vendor · Weeks | We didn't find a signed record of what the product is from a party tied to you or the brand. |
| Product versions on record | ◌ Waiting |  |
| **Seller** `✕◌` | 0 of 2 pass |  |
| A registered company behind the site | ✕ To fix · Legal · Weeks to months | We didn't find a legal entity on your site that a public register confirms. |
| Verified by an independent party | ◌ Waiting |  |
| **Binding** `✓✓` | 2 of 2 pass |  |
| A proof anyone can check | ✓ Passed |  |
| Agreements proven on a public ledger | ✓ Passed |  |

## The plan · 4 fixes

### Go further · 4 fixes

No stage needs these.

| # | Fix | Owner | Typical time | After |
|---|---|---|---|---|
| 1 | [Signed product records](https://lens.integraledger.com/reports/0x36694bacd6cb915885e1cef530269778639b921e2828e448318d985af59e7d06/checks/R8.4#fix) | Outside vendor | Weeks |  |
| 2 | [Product versions on record](https://lens.integraledger.com/reports/0x36694bacd6cb915885e1cef530269778639b921e2828e448318d985af59e7d06/checks/R8.5#fix) | Developer | Weeks | after 1 |
| 3 | [A registered company behind the site](https://lens.integraledger.com/reports/0x36694bacd6cb915885e1cef530269778639b921e2828e448318d985af59e7d06/checks/R7.3#fix) | Legal | Weeks to months |  |
| 4 | [Verified by an independent party](https://lens.integraledger.com/reports/0x36694bacd6cb915885e1cef530269778639b921e2828e448318d985af59e7d06/checks/R7.4#fix) | Marketing | Weeks to months | after 3 |

### By owner

| Owner | Fixes |
|---|---|
| Outside vendor | 1 |
| Developer | 2 |
| Legal | 3 |
| Marketing | 4 |

Each fix's exact change is in the technical appendix, under its number.

## Technical appendix

For your engineers: each check's code and recorded outcome, the evidence behind it, and how to check this report without trusting Lens.

### The fixes in detail

Numbered as in the plan.

| # | Code | Fix | What to do |
|---|---|---|---|
| 1 | R8.4 | Signed product records | Publish product passports signed by the seller or the brand owner. *How Lens re-checks it:* A signed product passport, linked from the product page and issued by a party bound to your site, verifies and names the same product, for at least 90% of the products checked. |
| 2 | R8.5 | Product versions on record | Register each product version, and reference it from the ATR. *How Lens re-checks it:* The agreement record from a nominal transaction made with your consent names the product version, and a public log holds that version. |
| 3 | R7.3 | A registered company behind the site | Publish legalName and a register identifier (an LEI, an EU VAT number, a CIK, a UK company number or an ABN) in schema.org/Organization, writing the name as the register does. *How Lens re-checks it:* A public register confirms an identifier you publish, under the same legal name. |
| 4 | R7.4 | Verified by an independent party | Obtain a Verified Mark or Common Mark Certificate for the domain and publish it in its BIMI record, or a Digital Identity Anchor from your business register linked from your DID document. *How Lens re-checks it:* A verified mark certificate for your domain, in your BIMI record, chains to a listed root, is not revoked, and names the organization a register confirmed. |

### Ladders

Each ladder's level is the highest rung whose checks, and every one below it, pass. The ceiling is the level it could reach if every check Lens couldn't make had passed.

| Code | Ladder | Level | Ceiling |
|---|---|---|---|
| R1 | Catalog | 4 of 4 |  |
| R2 | Purchase | 4 of 4 |  |
| R3 | Access | 2 of 2 |  |
| R4 | Terms | 8 of 8 |  |
| R6 | Binding | 4 of 4 |  |
| R7 | Seller | 2 of 4 |  |
| R8 | Product | 3 of 5 |  |
| R9 | Price | 5 of 5 |  |
| R10 | Agreement record | 3 of 3 |  |

### Every check

30 checks, by ladder, lowest rung first. 29 apply to this site.

| Code | Check | Recorded | Reason | Asked as · from |
|---|---|---|---|---|
| R1.2 | Product details software can read | `met` · Passed | https://integra-lens-merch-live.demos.integraledger.net/products/lens-tee carries a structured product in JSON-LD: "Integra Lens t-shirt", with a price and a currency. | anon · cf-worker |
| R1.3 | A product list AI agents can download | `met` · Passed | The sitemap at https://integra-lens-merch-live.demos.integraledger.net/sitemap.xml lists the site's product pages, and https://integra-lens-merch-live.demos.integraledger.net/products/lens-tee, one of them, carries a product with its price. | anon · cf-worker |
| R1.4 | An agent interface that answers product searches | `met` · Passed | An agent queried the catalog at https://integra-lens-merch-live.demos.integraledger.net/mcp, through a UCP catalog over MCP. | anon, ucp · cf-worker |
| R2.2 | Order links AI agents can build | `met` · Passed | An agent can complete a purchase through UCP checkout over MCP, at https://integra-lens-merch-live.demos.integraledger.net/mcp. No checkout was created. That meets R2.2 too, through R2.3. | anon, ucp · cf-worker |
| R2.3 | A checkout for AI agents | `met` · Passed | An agent can complete a purchase through UCP checkout over MCP, at https://integra-lens-merch-live.demos.integraledger.net/mcp. No checkout was created. | anon, ucp · cf-worker |
| R2.4 | A way for AI agents to pay | `met` · Passed | An agent can pay: Lens met an x402 v2 challenge (exact on eip155:84532). | anon · cf-worker |
| R3.2 | Letting honest AI agents in | `met` · Passed | The home page admits an AI agent that says what it is, and so do the 4 agent surfaces it publishes (/.well-known/ucp, /.well-known/legal-context.json, /.well-known/agent-card.json, the UCP service endpoint). | anon · cf-worker |
| R4.2 | Terms of sale AI agents can read | `met` · Passed | https://integra-lens-merch-live.demos.integraledger.net/terms.md is served as text an agent can read (3738 words), and the site declares it as its terms. | anon · cf-worker |
| R4.3 | Dated terms | `met` · Passed | The terms are dated: "Effective: 2026-10-03". | anon · cf-worker |
| R4.4 | Versioned terms | `met` · Passed | The terms state their version: "Version 4". | anon · cf-worker |
| R4.5 | Terms that stay the same | `met` · Passed | Two fetches of the terms returned identical bytes (0xcaaef4505245b302b10ab790672803382dfef31e06d05d03b1a2d08b1e24cfbf). | anon · cf-worker |
| R4.6 | Terms in a clean format | `met` · Passed | The terms are served as text/markdown. | anon · cf-worker |
| R4.7 | The same terms everywhere | `n/a` · Doesn't apply | There is nothing to compare: the site presents no other terms document meeting R4.2, so whether the legal context's terms match the rest does not arise. | anon · cf-worker |
| R4.8 | Terms locked by a fingerprint | `met` · Passed | The legal context pins its terms by atrHash, and both fetches of the terms hash to it. | anon · cf-worker |
| R6.2 | The agreement inside the payment | `met` · Passed | The buyer's approval of the payment carries H: the x402/exact/eip155/eip3009 pairing's pattern states that the buyer signs over it. | anon · cf-worker |
| R6.3 | A proof anyone can check | `met` · Passed | A stranger can check the binding from public data alone: the x402/exact/eip155/eip3009 pairing's pattern states a public proof. | anon · cf-worker |
| R6.4 | Agreements proven on a public ledger | `met` · Passed | The nominal payment settled in transaction 0xf6380eaa7c3f43af9614bb7bd4524a329916044e1dedbaa8db230f9c41288ba0, block 47651307: its EIP-3009 authorization used the nonce H, 0x50ecfbf0acd3456730ff83829437393b161fc5542f54b341d0802bea1415134a, the hash of the agreement record's bytes served at https://atr.demos.integraledger.net/atr/0x50ecfbf0acd3456730ff83829437393b161fc5542f54b341d0802bea1415134a. | anon, lens · cf-worker |
| R7.2 | Your legal name, machine-readable | `met` · Passed | The seller names its legal entity on its home page: "Integra Ledger, Inc.". | anon · cf-worker |
| R7.3 | A registered company behind the site | `not_met` · To fix | The site names no legal entity with a register identifier (leiCode, vatID, taxID, duns, iso6523Code, globalLocationNumber, or an identifier PropertyValue such as a CIK or a company number): not in the schema.org Organization of any page Lens read, the UCP profile or the DID document. | anon · cf-worker |
| R7.4 | Verified by an independent party | `not_met` · Waiting | The site holds no third-party credential bound to its domain that Lens can see. BIMI: integraledger.net publishes no BIMI record at default._bimi.integraledger.net. UNTP DIA: no DID the origin links names a Digital Identity Anchor (a service of type untp:dia). | lens, anon · cf-worker |
| R8.2 | Product identifiers | `met` · Passed | 9 of 9 sampled products carry a valid, consistent identifier (0 with a global identifier, 9 merchant-scoped only), over a sample of 9 products (6 from the UCP answer, 3 from product pages): at least 90%. | ucp, anon · cf-worker |
| R8.3 | Identifiers that lead somewhere | `met` · Passed | 3 of the 3 products Lens resolved, drawn from a sample of 9 products (6 from the UCP answer, 3 from product pages), resolve to the product's own record, at least 90%. Integra Lens t-shirt (identifier https://integra-lens-merch-live.demos.integraledger.net/products/lens-tee): the identifier is on the seller's domain and is the product page Lens read, which answered HTTP 200. LCP t-shirt (identifier https://integra-lens-merch-live.demos.integraledger.net/products/lcp-tee): the identifier is on the seller's domain and is the product page Lens read, which answered HTTP 200. Integra Lens mug, 11 oz (identifier https://integra-lens-merch-live.demos.integraledger.net/products/lens-mug): the identifier is on the seller's domain and is the product page Lens read, which answered HTTP 200. | ucp, anon · cf-worker |
| R8.4 | Signed product records | `not_met` · To fix | The product page links no product record: no dpp link (an HTML link element or a Link header), and no schema.org hasDigitalProductPassport. | anon · cf-worker |
| R8.5 | Product versions on record | `not_met` · Waiting | The consented ATR carries no product exhibit, so it binds no registered product version. | anon · cf-worker |
| R9.2 | Prices software can read | `met` · Passed | https://integra-lens-merch-live.demos.integraledger.net/products/lens-tee publishes a price and its currency machine-readably. | anon · cf-worker |
| R9.3 | Whether tax is included | `met` · Passed | https://integra-lens-merch-live.demos.integraledger.net/products/lens-tee: an offer states that its price excludes tax. | anon · cf-worker |
| R9.4 | The total before committing | `met` · Passed | https://integra-lens-merch-live.demos.integraledger.net/products/lens-tee: an offer states that it is not shipped. | anon · cf-worker |
| R9.5 | How long a price holds | `met` · Passed | https://integra-lens-merch-live.demos.integraledger.net/products/lens-tee: an offer states that its price holds until 2026-12-31. | anon · cf-worker |
| R10.2 | A checkable record of each agreement | `met` · Passed | The buyer gate passes: the x402/exact/eip155/eip3009 challenge advertises H and its link, and both fetches of the agreement record hash to H. The pairing states what a payment through it proves: "The payer signed an EIP-3009 transfer authorization whose nonce is this ATR's hash. The token contract verified that signature when it executed the transfer, and the hash is on chain as the nonce topic of its AuthorizationUsed event in the settlement transaction. This does not show that amount, payee, asset or timing match the ATR's content." | anon · cf-worker |
| R10.3 | The terms inside each agreement | `met` · Passed | The agreement record contains the published terms digest 0xcaaef4505245b302b10ab790672803382dfef31e06d05d03b1a2d08b1e24cfbf. | anon · cf-worker |

**Every digest, whole.** Each digest is the SHA-256 of bytes the probe captured, and those bytes are served at the address below, so re-hashing what you fetch must give the same value.

```
https://lens.integraledger.com/reports/0x36694bacd6cb915885e1cef530269778639b921e2828e448318d985af59e7d06/evidence/<sha256>
```

```
0x6e22d77ebf8e4471d1663fac5f8d519f0ebbdd6bac2872943b7e4a0439a51716  R1.2 R1.3 R8.2 R8.3 R8.4 R9.2 R9.3 R9.4 R9.5
0xf0f2b211bb8da98e843b41fcc41caa5274205b3ef764802fa496b90f355fb3a2  R1.3
0xa4d7f251b8cec4251446e539c19866ee1e8d88c127a1aa8d93ebca59b51ba9ad  R1.4 R2.2 R2.3 R2.4 R3.2 R7.3
0x50af9739dfed71892342addd6a1d4d68528acacb430aae64381dd1f1b7b27b78  R1.4 R2.2 R2.3 R3.2
0xb9e2b725cf933d69cd8a11581d4676d6b92b7dafb796eaf0f38f0d373148a92f  R1.4 R2.2 R2.3
0xbc1bae197fd0cb69175ebd01d0a0a81967f4350e2b28a7c7c030ca66997011ee  R1.4 R8.2 R8.3
0x21cc2f91caef41481400931a5fc2d49bde0ff643acbf84072295b0ff304c255f  R1.4
0x454626954e69f8a039843a3a11aecbdff90dd3739a855fe424e4b4bb0c9cc7d1  R2.4 R6.2 R6.3 R10.2 R10.3
0xe933e3ccb8224a3fe13c22d338e7d0164ffa4cca0cdfd43245c5c0f8897fd1ff  R2.4
0xfe5be972743dfd4067f9a750aa73554afaadadf47924323e24506f8be720049e  R2.4 R3.2
0xfa4537bb7e5efb42c4fdc0f55f9b5365b0386330f1d5bef6ec85a1029cdba8fa  R3.2 R7.2 R7.3
0x5981bc2ad6098e4eb6da297704f1331c37a2562d8f5d5ddcb3b70f5d9d037d3b  R3.2 R4.7 R4.8 R10.3
0x82d0904badc12ee462ec9a498631b59b7e27b9932ec8bbcf10969303029a7412  R4.2 R4.3 R4.4 R4.5 R4.6 R4.7 R4.8
0xc66a3a6ccd086d221f1c786a21a73ac6d6b9ce2bb4180fbef8a4c3fd809f41ec  R4.5 R4.8
0x4dd4c08eee8070bfffe0af5a33ae865f1934c02c152cf02b431a91f047f3f846  R6.2 R6.3 R10.2 R10.3
0x8c3c69d358a1fdeda87d7160774f0a14c5c676fe6d18f04c40ec8d6d6e38d3e9  R6.2 R6.3 R10.2 R10.3
0x958969dd3a9ac8ab2bc97edaf4ab8f36484c8ca0f64335f77075e1d160a182ab  R6.4
0xb4f179225b233aaa692df48b2da957793cac01a789b89e28980b64fe80d78f69  R6.4 R8.5
0x5ce842ef81639360b967ebfff1908813b882fc71f32069699b8f26115d21a5ac  R6.4
0xf11c034bc6d88f2f75faf5369092e795a616a254b9a49610c3a9dc3caae94dc7  R6.4
0x956d894b4618a8f3afa74d9e039173a5726f3b06f27fc9c93408051de266e5b8  R6.4
0xd4437b18729b8be73002a42aa062ec47f932eb7ddae59b65e9858bcb776360c2  R7.3 R7.4
0x6c4e8c0cbc5f41594285a2ae2a7b9dfc8706036bdf6866ce0a1413cd454f3b43  R7.4
0x5cc0918a93d061aa62d1865404bd1850330e544c73196ae63ec53e2d51c42ff6  R7.4
0xd44de479597860d3d2e1b5da4fda6e183aa748243711070506e683e9e876e751  R8.2 R8.3
0xa8318aefa2b3f32cb46228add1ebc60c98e56f7b9609e3a480172c055f0b8427  R8.2 R8.3
```

### Commercial certainty, rung by rung

| Code | Ladder | Recorded | Reason | What to do |
|---|---|---|---|---|
| C2.2 | Fulfillment certainty | `not_met` | No offer publishes its availability. | Publish `availability` on every offer. |
| C2.3 | Fulfillment certainty | `not_met` | Availability is stated only as in or out of stock. | Publish `inventoryLevel`, or `availabilityStarts` where an item is awaiting restock. |
| C2.4 | Fulfillment certainty | `not_met` | Nothing states when a purchase would arrive. | Publish `shippingDetails` with `deliveryTime` and `shippingDestination`. |
| C2.5 | Fulfillment certainty | `not_met` | Delivery is not priced per destination before purchase. | Publish `shippingRate` per destination in `shippingDetails`. |
| C3.2 | Recourse | `not_met` | No returns or cancellation document was found. | Publish the returns policy at its own URL and link it. |
| C3.3 | Recourse | `not_met` | The returns policy is prose only; nothing structured states it. | Publish `hasMerchantReturnPolicy`, or a UCP policy entry with its URL. |
| C3.4 | Recourse | `not_met` | No return window an agent could act on is published. | Publish `merchantReturnDays` and `returnPolicyCategory`. |
| C3.5 | Recourse | `not_met` | No contact or dispute route is published for an agent to use. | Publish a contact or dispute route the legal context names. |
| C4.2 | Continuity | `met` | The profile declares version 2026-08-25. |  |
| C4.3 | Continuity | `met` | Cache-Control: public, max-age=300, no-transform |  |
| C4.4 | Continuity | `met` | Two reads of the profile agreed: byte-identical. |  |
| C4.5 | Continuity | `not_met` | No supported_versions map is published, so a change is a silent break. | Publish `supported_versions`, mapping each version you still answer to its profile. |

### Coverage

Coverage `partial`: 29 of 30 checks reached a verdict. Stages reached: Discoverable, Agreeable, Transactable, Provable. Within the ceiling: Discoverable, Agreeable, Transactable, Provable.

| Status | Recorded | Count | What it means |
|---|---|---|---|
| ✓ Passed | `met` | 25 | The evidence Lens captured satisfies the check. |
| ✕ To fix | `not_met` | 2 | The evidence does not satisfy the check. It is a fix in the plan. |
| ◌ Waiting | `not_met` | 2 | Not met because an earlier check on its ladder is not met. It is in the plan, after that fix. |
| – Not checked | `not_tested` | 0 | Lens did not run this check, and the reason says why. It counts neither as passed nor as failed. |
| – Not checked | `inconclusive` | 0 | Lens ran this check and got no answer, for a reason on its own side, such as a timeout. It counts neither way. |
| ∅ Doesn't apply | `n/a` | 1 | The check's question has nothing to apply to on this site. It counts neither way. |
| All checks |  | 30 | 29 apply to this site |

| Route status | Count | What it means |
|---|---|---|
| Met | 20 | A check passed by this route. |
| Seen | 9 | Lens found this route's surface, and it met no check. |
| Absent | 38 | Lens did not find this route's surface. That includes a route it was refused or did not request, so it is not proof the route is missing. |
| Not checked | 8 | Lens does not read this route yet. It counts neither for nor against the site. |

### Legal Context Protocol

Read from the same probe, and never scored: no stage depends on it.

| Item | What Lens read |
|---|---|
| Conformance level | 2 · terms pinned by their digest |
| Read by | `@integraledger/lcp@0.2.0` |
| Discovery document (LCP §2) | https://integra-lens-merch-live.demos.integraledger.net/.well-known/legal-context.json · `met` |
| Terms, served standalone (LCP §2.3) | https://integra-lens-merch-live.demos.integraledger.net/terms.md · `met` · The terms are a standalone document: https://integra-lens-merch-live.demos.integraledger.net/terms.md answers 200 with 22699 bytes of text/markdown. |
| Terms pinned by their digest | `met` · The legal context pins its terms by atrHash, and both fetches of the terms hash to it. |
| Published terms digest | `0xcaaef4505245b302b10ab790672803382dfef31e06d05d03b1a2d08b1e24cfbf` |
| Members declared | `atrHash`, `terms`, `termsFormat` |
| Dispute clause identifier | None declared |
| Placements of the agreement record's hash | x402/exact/eip155/eip3009: the buyer signs over it; a stranger can check it; record matches its hash `met`; record contains the terms digest `met`. H `0xaa7d2b553e1de43824114cdbc2b28e8a63536ab2cfed4fd7cf57ffcbe18d564d` mpp/charge/evm/authorization: the buyer signs over it; a stranger can check it; record matches its hash `met`; record contains the terms digest `met`. H `0x78ef5d712a9fef5889a82473946ff7deba922dcbcad27ceaf4adb90a64e6067d` |
| Settlement read | `met` · eip155:84532 · `0xf6380eaa7c3f43af9614bb7bd4524a329916044e1dedbaa8db230f9c41288ba0` · The nominal payment settled in transaction 0xf6380eaa7c3f43af9614bb7bd4524a329916044e1dedbaa8db230f9c41288ba0, block 47651307: its EIP-3009 authorization used the nonce H, 0x50ecfbf0acd3456730ff83829437393b161fc5542f54b341d0802bea1415134a, the hash of the agreement record's bytes served at https://atr.demos.integraledger.net/atr/0x50ecfbf0acd3456730ff83829437393b161fc5542f54b341d0802bea1415134a. |

### Identities

Who Lens said it was. Every request names the identity that made it.

| Identity | Kind | Sends | Status |
|---|---|---|---|
| anon | Anonymous HTTP | IntegraLens/0.1.0 (+https://lens.integraledger.com/probe) | Cited by 30 checks |
| ucp | UCP platform | IntegraLens/0.1.0 (+https://lens.integraledger.com/probe) · UCP profile https://lens.integraledger.com/.well-known/ucp | Cited by 5 checks |
| signed | Signed agent | IntegraLens/0.1.0 (+https://lens.integraledger.com/probe) | Configured (web-bot-auth) · No check cites it |
| lens | Lens infrastructure | Lens's own requests to third-party services, such as a register or a ledger | Cited by 2 checks |

### Observations and notes

Recorded beside the checks, and scored by nothing.

| Observation | Detail | Evidence |
|---|---|---|
| Treats an agent that proves who it is differently from one that does not | A 402 declares x402's http-message-signatures extension: the site authenticates agents by signature. | 1 |
| The buyer's authorization of the payment is signed | The payment is proven: the buyer's authorization is signed through the x402/exact/eip155/eip3009 pairing, whose pattern states that the buyer signs. | 1 |
| Publishes keys bound to its domain | The UCP profile publishes 1 signing key(s) with a kid in keys[]. The did:web document at /.well-known/did.json publishes 1 verification method(s). The A2A agent card carries 1 signature(s) whose protected header gives its public key, embedded or at a key set on the seller's domain (not verified here). The Web Bot Auth key directory at /.well-known/http-message-signatures-directory publishes 1 public key(s). | 4 |
| No privacy-policy link was found on the home page | The home page, as served without running its scripts, links to no privacy policy by its language's phrases or a privacy path. | 1 |

```
access.verified-agent         0x454626954e69f8a039843a3a11aecbdff90dd3739a855fe424e4b4bb0c9cc7d1
payment.signed-authorisation  0x454626954e69f8a039843a3a11aecbdff90dd3739a855fe424e4b4bb0c9cc7d1
seller.keys                   0xa4d7f251b8cec4251446e539c19866ee1e8d88c127a1aa8d93ebca59b51ba9ad
seller.keys                   0xd4437b18729b8be73002a42aa062ec47f932eb7ddae59b65e9858bcb776360c2
seller.keys                   0xfe5be972743dfd4067f9a750aa73554afaadadf47924323e24506f8be720049e
seller.keys                   0xe04b9b8ed985ac873550732cc45460483b162480ba5511e85913dc72d924dc96
terms.privacy-policy          0xfa4537bb7e5efb42c4fdc0f55f9b5365b0386330f1d5bef6ec85a1029cdba8fa
```

**Notes from the probe**

| Step | Kind | Note |
|---|---|---|
| `schemamap` | `skip` | robots.txt names no schema map on the site's domain |
| `ucp.handshake` | `guard` | a request to https://lens.integraledger.com/.well-known/ucp was refused: Lens does not probe itself. |
| `product` | `skip` | product records: the product page links no product record (rel=dpp, or schema.org hasDigitalProductPassport) |
| `registers` | `skip` | registers: Companies House is not queried, because no COMPANIES_HOUSE_KEY is set |
| `registers` | `skip` | registers: ABN Lookup is not queried, because no ABN_GUID is set |
| `settle` | `skip` | product exhibits: the consented ATR carries none |

### Standards cited

| Standard | Where to read it |
|---|---|
| UCP, the Universal Commerce Protocol | https://ucp.dev |
| ACP, the Agentic Commerce Protocol | https://github.com/agentic-commerce-protocol/agentic-commerce-protocol |
| AP2, the Agent Payments Protocol | https://github.com/google-agentic-commerce/AP2 |
| x402 | https://x402.org |
| MPP, the Machine Payments Protocol | https://paymentauth.org |
| MCP, the Model Context Protocol | https://modelcontextprotocol.io |
| LCP, the Legal Context Protocol | https://integraledger.com |
| ATR, the agreement transaction record | https://www.npmjs.com/package/@integraledger/lcp |
| Web Bot Auth (RFC 9421 signatures) | https://datatracker.ietf.org/doc/draft-ietf-webbotauth-httpsig-protocol/ |
| robots.txt (RFC 9309) | https://www.rfc-editor.org/rfc/rfc9309.html |
| schema.org Product | https://schema.org/Product |
| GTIN and GS1 Digital Link | https://www.gs1.org/standards/gs1-digital-link |
| LEI (ISO 17442) | https://www.gleif.org/en/about-lei/introducing-the-legal-entity-identifier-lei |
| VIES (EU VAT validation) | https://ec.europa.eu/taxation_customs/vies/ |
| BIMI and Verified Mark Certificates | https://bimigroup.org |
| did:web and DID Configuration | https://w3c-ccg.github.io/did-method-web/ |
| SCITT and transparency logs | https://www.rfc-editor.org/rfc/rfc9943.html |
| Digital Product Passport | https://uncefact.github.io/spec-untp/ |

### Verification

What produced this report, and where the same bytes are served.

```
Report fingerprint  0x36694bacd6cb915885e1cef530269778639b921e2828e448318d985af59e7d06
Capture SHA-256     0xdc7e5b17356044dd1876f305eb303010832009068a0d480ad46726182999929b
Analysis SHA-256    0x8c8d305472c7126d1cbb63aa8ceb37a8549daaea6c4fc288f94065d3f51d306c
Rubric              0.3.0
Rubric SHA-256      0x5710a7d11733b7ca2ba68bc67ecd7b859eb79847e314ef8eedb4301d5f51ce51
Engine              lens@0.1.0+dev
Probe window        2026-10-03T23:41:26.099Z to 2026-10-03T23:41:41.919Z
```

| Item | Address |
|---|---|
| The report, as JSON | https://lens.integraledger.com/reports/0x36694bacd6cb915885e1cef530269778639b921e2828e448318d985af59e7d06.json |
| The rubric it was scored under | https://lens.integraledger.com/rubric/0.3.0.json |
| Everything the probe fetched | https://lens.integraledger.com/reports/0x36694bacd6cb915885e1cef530269778639b921e2828e448318d985af59e7d06/manifest.json |
| Any single item | https://lens.integraledger.com/reports/0x36694bacd6cb915885e1cef530269778639b921e2828e448318d985af59e7d06/evidence/<sha256> |

The fingerprint is the SHA-256 of the report's JSON, byte for byte. Hash the download, never a view of it.

```
curl -s https://lens.integraledger.com/reports/0x36694bacd6cb915885e1cef530269778639b921e2828e448318d985af59e7d06.json | shasum -a 256
```
