KeelsonDocs
    Judge Mode

    Verify an Alibi

    Check a real Keelson Alibi in one command, with no account.

    1 minute, no account

    An Alibi is the public record of one purchase an AI agent made under a Keelson mandate. This guide checks a real one, from a purchase paid on the PayPal sandbox, against production.

    1. Take a real Alibi

      This Alibi was issued on 9 November 2026 and is committed to the repository as a test fixture, so it never changes under you.

      # A real Alibi from the PayPal sandbox, countersigned by both TEEs
      ALIBI=https://raw.githubusercontent.com/DavidZapataOh/keelson-paypal/main/packages/alibi/test/fixtures/01M6ZWZJHWRRHQEYNJAT7NMSV8.alibi
    2. Send it to the verifier

      POST /v1/alibis/verify runs the browser verifier's checks against pinned trust roots and a public Arbitrum RPC. It needs no account, and it stores nothing.

      curl -sL "$ALIBI" \
      | curl -s https://api.keelson.finance/v1/alibis/verify \
          -H 'content-type: application/vnd.keelson.alibi.v1+json' \
          -H "idempotency-key: docs-$RANDOM$RANDOM" \
          --data-binary @- \
    3. Read the verdict

      verified 2of2 means both TEE legs, Intel TDX and AWS Nitro, countersigned this purchase, and every check that applies to it passed.

      | jq -r '"\(.verdict) \(.mode)"'
      
      # expect: ^verified 2of2$
    4. Do it from code

      The same request from TypeScript. The idempotency key makes a retry the same request.

      const res = await fetch("https://api.keelson.finance/v1/alibis/verify", {
        method: "POST",
        headers: {
          "content-type": "application/vnd.keelson.alibi.v1+json",
          "idempotency-key": crypto.randomUUID(),
        },
        body: alibi,
      });
    5. See what was checked

      Each check names one thing it proves: the mandate's passkey, both attestations, the countersignature, inclusion in the public log, the witnesses and the anchor on chain. Checks for features this purchase did not use, such as zero-knowledge proofs, are absent.

        "checks": [
          {
            "id": "bundle.format",
            "status": "pass"
          },
          {
            "id": "leaf.view",
            "status": "pass"
          },
    6. Trust no server

      Download the same file and drop it on verify.keelson.finance. The checks run in your browser against roots pinned in its code; only the chain reads leave your machine.

      # A real Alibi from the PayPal sandbox, countersigned by both TEEs
      ALIBI=https://raw.githubusercontent.com/DavidZapataOh/keelson-paypal/main/packages/alibi/test/fixtures/01M6ZWZJHWRRHQEYNJAT7NMSV8.alibi
    # A real Alibi from the PayPal sandbox, countersigned by both TEEs
    ALIBI=https://raw.githubusercontent.com/DavidZapataOh/keelson-paypal/main/packages/alibi/test/fixtures/01M6ZWZJHWRRHQEYNJAT7NMSV8.alibi
    
    curl -sL "$ALIBI" \
    | curl -s https://api.keelson.finance/v1/alibis/verify \
        -H 'content-type: application/vnd.keelson.alibi.v1+json' \
        -H "idempotency-key: docs-$RANDOM$RANDOM" \
        --data-binary @- \
    | jq -r '"\(.verdict) \(.mode)"'
    
    # expect: ^verified 2of2$

    In your browser

    The command above asks Keelson's API to run the checks. To trust no Keelson server at all, download the same Alibi and drop it on verify.keelson.finance. The page runs every check in your browser against trust roots pinned in its code; it reads the chain from a public Arbitrum RPC that you can replace with your own.

    What each check means

    Each row is one check the verifier runs, the party whose signature or record it rests on, and how it came out for this Alibi.

    CheckWhat it checksWho answers for itThis Alibi
    bundle.formatBundle formatKeelsonPassed
    leaf.viewLog leaf matches the bundleKeelsonPassed
    qr.leafMatches the QR linkKeelsonNot used by this purchase
    evidence.manifestEvidence manifestAgent operatorPassed
    evidence.web_factStore's product endpoint, notarized (TLSNotary)KeelsonNot used by this purchase
    evidence.checkoutCheckout total and its breakdownAgent operatorNot used by this purchase
    evidence.conversionCurrency conversion within the mandate's spreadAgent operatorNot used by this purchase
    paypal.idsPayPal idsKeelsonPassed
    card.authorizationsCard charges approved by both TEEsKeelsonNot used by this purchase
    mandate.challengeMandate challengeUserPassed
    mandate.passkeyUser's passkey signatureUserPassed
    mandate.credentialsMandate credentialsKeelsonPassed
    tee.attestation.tdxIntel TDX attestationKeelsonPassed
    tee.attestation.nitroAWS Nitro attestationKeelsonPassed
    tee.registrySigners registered on-chainKeelsonPassed
    tee.countersignTEE countersignatureKeelsonPassed
    policy.replayPolicy decision replayed with CedarKeelsonPassed
    log.policyLog policy is the pinned oneKeelsonPassed
    log.inclusionIncluded in the logKeelsonPassed
    log.witnessesWitness cosignaturesWitnessesPassed
    anchor.consistencyAnchor consistent with the logKeelsonPassed
    anchor.rootRoot anchored on-chainArbitrumPassed
    anchor.txAnchor transactionArbitrumPassed
    timestampsRFC 3161 timestampsTimestamp authoritiesPassed
    zk.c1Zero-knowledge proofKeelsonNot used by this purchase
    zk.c3Signed by a registered user, anonymouslyArbitrumNot used by this purchase