Skip to content
Integra Lens
Menu

Agentic commerce readiness report

Integra Lens Merch Shop

integralens.store · Checked 5 Oct 2026, 20:28 UTC · 51 requests

Export

Markdown

The same report as text, for a ticket, a pull request or an email.

integralens.store

Provable · Checked 5 Oct 2026, 20:28 UTC

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

StageNeeded 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 · 3 fixes

Discoverable · Reached

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

Findings · 2 of 2 pass

CheckStatusWhat 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.

CheckStatusWhat 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 needsLevelMissing
Keeps working after updates–––– 1 of 5

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

CheckStatusWhat 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.

CheckStatusWhat Lens found
Terms ✓✓✓3 of 3 pass
Terms in a clean format✓ Passed
The same terms everywhere✓ Passed
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 needsLevelMissing
Returns and disputes✕✓✓✓ 1 of 5Missing: a returns policy page.

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

CheckStatusWhat 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.

CheckStatusWhat 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 needsLevelMissing
In stock, with a delivery date✓✕✓✓ 2 of 5Missing: stock level.

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

CheckStatusWhat 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.

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

The plan · 3 fixes

Go further · 3 fixes

No stage needs these.

#FixOwnerTypical timeAfter
1Signed product recordsOutside vendorWeeks
2A registered company behind the siteLegalWeeks to months
3Verified by an independent partyMarketingWeeks to monthsafter 2

By owner

OwnerFixes
Outside vendor1
Legal2
Marketing3

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.

#CodeFixWhat to do
1R8.4Signed product recordsPublish 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.
2R7.3A registered company behind the sitePublish 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.
3R7.4Verified by an independent partyObtain 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.

CodeLadderLevelCeiling
R1Catalog4 of 4
R2Purchase4 of 4
R3Access2 of 2
R4Terms8 of 8
R6Binding3 of 44
R7Seller2 of 4
R8Product3 of 5
R9Price5 of 5
R10Agreement record3 of 3

Every check

30 checks, by ladder, lowest rung first.

CodeCheckRecordedReasonAsked as · from
R1.2Product details software can readmet · Passedhttps://integralens.store/products/standard-sweatshirt carries a structured product in JSON-LD: "Wear the Standard Sweatshirt", with a price and a currency.anon · cf-worker
R1.3A product list AI agents can downloadmet · Passedhttps://integralens.store/products.json?limit=10 answers with 8 catalog product(s), each with a title and a price.anon · cf-worker
R1.4An agent interface that answers product searchesmet · PassedAn agent queried the catalog at https://integralens.store/openapi.json, through OpenAPI operations declaring x-payment-info.anon, ucp · cf-worker
R2.2Order links AI agents can buildmet · PassedAn agent can pay: Lens met an x402 v2 challenge (exact on eip155:84532). That meets R2.3 too, through R2.4. That meets R2.2 too, through R2.3.anon · cf-worker
R2.3A checkout for AI agentsmet · PassedAn agent can pay: Lens met an x402 v2 challenge (exact on eip155:84532). That meets R2.3 too, through R2.4.anon · cf-worker
R2.4A way for AI agents to paymet · PassedAn agent can pay: Lens met an x402 v2 challenge (exact on eip155:84532).anon · cf-worker
R3.2Letting honest AI agents inmet · PassedThe home page admits an AI agent that says what it is, and so does the agent surface it publishes (/.well-known/legal-context.json).anon · cf-worker
R4.2Terms of sale AI agents can readmet · Passedhttps://integralens.store/terms.md is served as text an agent can read (446 words), and the site declares it as its terms.anon · cf-worker
R4.3Dated termsmet · PassedThe terms are dated: "Last updated: October 4, 2026".anon · cf-worker
R4.4Versioned termsmet · PassedThe terms state their version: "Version 1.2".anon · cf-worker
R4.5Terms that stay the samemet · PassedTwo fetches of the terms returned identical bytes (0x9e3a5c3e85095e32957b2215dc226f87b422ce3f929370564562a67d9deb6b03).anon · cf-worker
R4.6Terms in a clean formatmet · PassedThe terms are served as text/markdown.anon · cf-worker
R4.7The same terms everywheremet · PassedThe model found that the terms shown elsewhere state the same terms as the legal context's. The model's notes: No differences found. Judged by google/gemini-3.8-flash, prompt R4.7@1, on the evidence cited.anon · cf-worker
R4.8Terms locked by a fingerprintmet · PassedThe legal context pins its terms by atrHash, and both fetches of the terms hash to it.anon · cf-worker
R6.2The agreement inside the paymentmet · PassedThe 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.3A proof anyone can checkmet · PassedA 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.4Agreements proven on a public ledgernot_tested · Not checkedThe settled payment check was skipped: no consent from the seller to a nominal transaction (decision 13).not established — it cites no exchange
R7.2Your legal name, machine-readablemet · PassedThe seller names its legal entity at https://integralens.store/products/standard-sweatshirt: "Integra Ledger, Inc.".anon · cf-worker
R7.3A registered company behind the sitenot_met · To fixThe 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.4Verified by an independent partynot_met · WaitingThe site holds no third-party credential bound to its domain that Lens can see. BIMI: integralens.store publishes no BIMI record at default._bimi.integralens.store. UNTP DIA: no DID the origin links names a Digital Identity Anchor (a service of type untp:dia).lens, anon · cf-worker
R8.2Product identifiersmet · Passed11 of 11 sampled products carry a valid, consistent identifier (0 with a global identifier, 11 merchant-scoped only), over a sample of 11 products (8 from the catalog, 3 from product pages): at least 90%.anon · cf-worker
R8.3Identifiers that lead somewheremet · Passed3 of the 3 products Lens resolved, drawn from a sample of 11 products (8 from the catalog, 3 from product pages), resolve to the product's own record, at least 90%. Wear the Standard Sweatshirt (identifier https://integralens.store/products/standard-sweatshirt): the identifier is on the seller's domain and is the product page Lens read, which answered HTTP 200. LCP Icon Tritan Water Bottle (identifier https://integralens.store/products/lcp-icon-tritan-water-bottle): the identifier is on the seller's domain and is the product page Lens read, which answered HTTP 200. INTEGRA Lens logo T-Shirt (identifier https://integralens.store/products/integra-lens-logo-t-shirt): the identifier is on the seller's domain and is the product page Lens read, which answered HTTP 200.anon · cf-worker
R8.4Signed product recordsnot_met · To fixThe 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.5Product versions on recordnot_tested · Not checkedSame reason as R6.4.not established — it cites no exchange
R9.2Prices software can readmet · Passedhttps://integralens.store/products/standard-sweatshirt publishes a price and its currency machine-readably.anon · cf-worker
R9.3Whether tax is includedmet · Passedhttps://integralens.store/products/standard-sweatshirt: an offer states that its price excludes tax.anon · cf-worker
R9.4The total before committingmet · Passedhttps://integralens.store/products/standard-sweatshirt: delivery is priced before purchase.anon · cf-worker
R9.5How long a price holdsmet · Passedhttps://integralens.store/products/standard-sweatshirt: an offer states that its price holds until 2026-12-31.anon · cf-worker
R10.2A checkable record of each agreementmet · PassedThe 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.3The terms inside each agreementmet · PassedThe agreement record contains the published terms digest 0x9e3a5c3e85095e32957b2215dc226f87b422ce3f929370564562a67d9deb6b03.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/0xb6bdb975718808a3612492045ef82b78cc053e81c7500a233a3c156f1b8809fc/evidence/<sha256>
0xb6ed044e8d8767b3eed40e16024cda8557fde289dfe9aba65842a03ae37b4f71  R1.2 R7.2 R8.2 R8.3 R8.4 R9.2 R9.3 R9.4 R9.5
0xb9dcbdc4bbe31b411ec1ecabfef71b9412a764cd4e622d967290ad6ca51e9d44  R1.3 R8.2 R8.3
0x4aac4951f95929d3a501dcf96e1a10541cfff3c91a0735c1c7756454d11f58e9  R1.4 R2.2 R2.3 R2.4
0xe44a27da79e938a3882971d492289768a846126df3058885ed2903e61e7fd227  R2.2 R2.3 R2.4 R6.2 R6.3 R10.2 R10.3
0x05da472032229946b97020179bb1421948132cc167e7a52b7d0d1dfeb0bed876  R3.2 R7.3
0xc6ad122e6e5c8c04135ebf0614a5352f80f118b79437b06f59c469a150995970  R3.2 R4.7 R4.8 R10.3
0x1c0efdd71540bbbfa9decf1d568cf064ec9a45cfceeef3d1ecbdb9c8ba492daf  R4.2 R4.3 R4.4 R4.5 R4.6 R4.7 R4.8
0x0cdee9b8deaa77b3a1cd7fcea06fab294b68ad9a5dcef9898cb87ef96ebd056b  R4.5 R4.8
0x9130ac774f2bfd56a83ad5b4a30ea212f718a2a001dc57e49b8583bc9e61a59b  R4.7
0xf9b7b8d61f8f9e88bc67a926ca9ed79f7e6d6ca3dfd84e92012f22cf46cd85cd  R6.2 R6.3 R10.2 R10.3
0x8e5c83b68474eadc8ff7e52e2871edba5422f0b44467017ec43dc24649cde088  R6.2 R6.3 R10.2 R10.3
0xab0bec07089d725d5ddfe0c79ce8c7e98cb1131ff5dc5dbd702bae673867ab5c  R7.3
0x9ad68bd418e3e5c728c8adf3ef8050570af73514407ba54221416699f19607d2  R7.3 R7.4
0x8eb00e383fbe0b3da0ac5c3e26aa1e15468ec55871d578a57eba8b04e223f7c7  R7.4
0x2c717f07a4322aa7619ef353f3249d35cb89d9e879bc08373cbbff20bc3a931f  R7.4
0x050a6c9411a54d452b3577f6bf6f9c66534bfe8d69081dfca3b390ecab09a42d  R8.2 R8.3
0xc4959c108b933b9458be51d9ea87435f7c4420ef893eb4e1941c4103e877c0e0  R8.2 R8.3

Commercial certainty, rung by rung

CodeLadderRecordedReasonWhat to do
C2.2Fulfillment certaintymetAvailability is published per item.
C2.3Fulfillment certaintynot_metAvailability is stated only as in or out of stock.Publish inventoryLevel, or availabilityStarts where an item is awaiting restock.
C2.4Fulfillment certaintymetA delivery estimate is published before purchase.
C2.5Fulfillment certaintymetDelivery is priced per destination.
C3.2Recoursenot_metNo returns or cancellation document was found.Publish the returns policy at its own URL and link it.
C3.3RecoursemetA returns policy is published machine-readably.
C3.4RecoursemetThe return window or category is given as a value.
C3.5RecoursemetA route to a human is published.
C4.2Continuitynot_testedNo UCP profile was served, so this was not assessed.
C4.3Continuitynot_testedNo UCP profile was served, so this was not assessed.
C4.4Continuitynot_testedNo UCP profile was served, so this was not assessed.
C4.5Continuitynot_testedNo UCP profile was served, so this was not assessed.

Coverage

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

StatusRecordedCountWhat it means
✓ Passedmet25The evidence Lens captured satisfies the check.
✕ To fixnot_met2The evidence does not satisfy the check. It is a fix in the plan.
◌ Waitingnot_met1Not met because an earlier check on its ladder is not met. It is in the plan, after that fix.
– Not checkednot_tested2Lens did not run this check, and the reason says why. It counts neither as passed nor as failed.
– Not checkedinconclusive0Lens ran this check and got no answer, for a reason on its own side, such as a timeout. It counts neither way.
∅ Doesn't applyn/a0The check's question has nothing to apply to on this site. It counts neither way.
All checks3030 apply to this site
Route statusCountWhat it means
Met19A check passed by this route.
Seen1Lens found this route's surface, and it met no check.
Absent47Lens 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 checked8Lens 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.

ItemWhat Lens read
Conformance level2 · terms pinned by their digest
Read by@integraledger/lcp@0.2.0
Discovery document (LCP §2)https://integralens.store/.well-known/legal-context.json · met
Terms, served standalone (LCP §2.3)https://integralens.store/terms.md · met · The terms are a standalone document: https://integralens.store/terms.md answers 200 with 2492 bytes of text/markdown.
Terms pinned by their digestmet · The legal context pins its terms by atrHash, and both fetches of the terms hash to it.
Published terms digest0x9e3a5c3e85095e32957b2215dc226f87b422ce3f929370564562a67d9deb6b03
Members declaredatrHash, contact, terms, termsFormat
Dispute clause identifierNone declared
Placements of the agreement record's hashx402/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 0x649f2acc906bc779365ccca2543668352e0defd21d7a04a21c894275d98e589a
Settlement readNo settled payment was named or made.

Identities

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

IdentityKindSendsStatus
anonAnonymous HTTPIntegraLens/0.1.0 (+https://lens.integraledger.com/probe)Cited by 28 checks
ucpUCP platformIntegraLens/0.1.0 (+https://lens.integraledger.com/probe) · UCP profile https://lens.integraledger.com/.well-known/ucpCited by 1 check
signedSigned agentIntegraLens/0.1.0 (+https://lens.integraledger.com/probe)Configured (web-bot-auth) · No check cites it
lensLens infrastructureLens's own requests to third-party services, such as a register or a ledgerCited by 1 check

Observations and notes

Recorded beside the checks, and scored by nothing.

ObservationDetailEvidence
Treats an agent that proves who it is no better than one that does notThe site answered Lens signing as a verified agent the same as an AI agent that says what it is at every address compared. Proving who the agent is changed nothing.4
The buyer's authorization of the payment is signedThe 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 no keys bound to its domainThe site publishes no key bound to its domain: no keys[] with a kid in a UCP profile, no did:web document or DID configuration naming keys, no JWKS (at /.well-known/jwks.json or through an OpenID Provider's jwks_uri), no signed A2A agent card, no did:webvh log and no Web Bot Auth key directory.6
No privacy-policy link was found on the home pageThe 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         0x037e7bd2e1b586a7725236653c2cc233e4e710e732248f458fbaca85e774a6be
access.verified-agent         0xc73730b4b2cb46602afd03f9cc4cafeb90c987e5c460c8ed734167275ba174b5
access.verified-agent         0xdd8c129512a417b0a030857ff6d7756cf3b03723960d73ede71960ad879d4cdd
access.verified-agent         0x71a89d5112519654543ad8fb6bd725ab181d0210acf0995165f2c5f49277c82e
payment.signed-authorisation  0xe44a27da79e938a3882971d492289768a846126df3058885ed2903e61e7fd227
seller.keys                   0x9ad68bd418e3e5c728c8adf3ef8050570af73514407ba54221416699f19607d2
seller.keys                   0x2c717f07a4322aa7619ef353f3249d35cb89d9e879bc08373cbbff20bc3a931f
seller.keys                   0xd60d52a955299ae79509375cd742709ec5cbd12d4169853277ef7ea5f370ede5
seller.keys                   0x0f1ba78beb749f3394ef537e1cb5d156b7ed38705812a86d6eba5cc05bd12455
seller.keys                   0x49f2507e64511af41f6892284a8266bd21bdc136e0b409c03d971bd954d215b7
seller.keys                   0xe4be7a756434c0e68240fb0bbf041610f7cfc0b67c2a4ec7a91281729c2433c7
terms.privacy-policy          0x05da472032229946b97020179bb1421948132cc167e7a52b7d0d1dfeb0bed876

Notes from the probe

StepKindNote
schemamapskiprobots.txt names no schema map on the site's domain
ucp.handshakeskipno UCP business profile
productskipproduct records: the product page links no product record (rel=dpp, or schema.org hasDigitalProductPassport)
registersskipregisters: Companies House is not queried, because no COMPANIES_HOUSE_KEY is set
registersskipregisters: ABN Lookup is not queried, because no ABN_GUID is set
settleskipno consent from the seller to a nominal transaction (decision 13)

Standards cited

StandardWhere to read it
UCP, the Universal Commerce Protocolhttps://ucp.dev
ACP, the Agentic Commerce Protocolhttps://github.com/agentic-commerce-protocol/agentic-commerce-protocol
AP2, the Agent Payments Protocolhttps://github.com/google-agentic-commerce/AP2
x402https://x402.org
MPP, the Machine Payments Protocolhttps://paymentauth.org
MCP, the Model Context Protocolhttps://modelcontextprotocol.io
LCP, the Legal Context Protocolhttps://integraledger.com
ATR, the agreement transaction recordhttps://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 Producthttps://schema.org/Product
GTIN and GS1 Digital Linkhttps://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 Certificateshttps://bimigroup.org
did:web and DID Configurationhttps://w3c-ccg.github.io/did-method-web/
SCITT and transparency logshttps://www.rfc-editor.org/rfc/rfc9943.html
Digital Product Passporthttps://uncefact.github.io/spec-untp/

Verification

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

Report fingerprint  0xb6bdb975718808a3612492045ef82b78cc053e81c7500a233a3c156f1b8809fc
Capture SHA-256     0x934255c77a2dcf93516c56cd17f3eb959788d3eb9a16690dd55c26d74f54692f
Analysis SHA-256    0x6d9750f540be7bf9417fc40d9d22888ba9519e412a56a3cd7377f0a633438b14
Rubric              0.3.0
Rubric SHA-256      0x5710a7d11733b7ca2ba68bc67ecd7b859eb79847e314ef8eedb4301d5f51ce51
Engine              lens@0.1.0+dev
Probe window        2026-10-05T20:28:31.521Z to 2026-10-05T20:28:34.987Z

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/0xb6bdb975718808a3612492045ef82b78cc053e81c7500a233a3c156f1b8809fc.json | shasum -a 256