Agents · on-chain licensing

Deploying agents for blockchain autonomy

Agents run an entire software licensing pipeline on a live blockchain. The token is not a receipt — it is the key to an MCP app handoff and every update that follows, for as long as the holder still owns it.

Context

Software licensing usually means a key server and a subscription table you defend forever. If the customer holds a token you issued, the token can be the licence instead — and unlike a licence key, it is theirs, transferable, and checkable by anyone. But only if you ask the chain at the moment of use. A cached answer is just a subscription record in a costume.

Decision

Give the agents everything measurable and reversible. Keep two actions human. Then build so that no agent capability, and no single compromised component, can reach those two.

Verify it yourself

Every mint, transfer and owner call described here is public. Read the contract, check who holds what, and verify the claims above against the chain rather than against me.

Polygon mainnetReconLion Overwatch — ERC-7210x853728534D67ff01f2C3761Cce631432Be2B610BView on Polygonscan →

How it fits together

Six actors, two human gates, and one token that keeps paying out as long as it is held.

  • human

    Holder

    Signs short expiring proofs of wallet control.

    Never sends a transaction. Never pays.

  • human

    Operator

    Approves who gets a licence.

    Cannot sign or broadcast anything.

  • human

    Signer

    A separate device holding the issuing wallet.

    Holds no other credential in the system.

  • service

    Entitlement service

    Runs the queue. Verifies every signature.

    Holds no delivery credential.

  • service

    Delivery host

    Builds the package. Keeps its secrets local.

    Never trusts the cloud about who is entitled.

  • chain

    Public chain

    The only source of truth for who holds what.

    Cannot be edited or argued with.

  1. Holder proves wallet control
  2. Operator approveshuman
  3. Signer mints from a separate devicehuman
  4. Service verifies the mint event itself
  5. Ownership re-checked on every later request
  6. Delivery host authenticates the holder
  7. Each half released on its own proof
  8. MCP app handed off, built on demand
  9. Updates re-check the chain — ownership is continuous

Approach

  • Ownership is re-read on chain at every protected request, across two independent providers. Sell the token and access ends on the next call — there is nothing to revoke.
  • A licence activates only after the mint event is pulled from the transaction receipt. An operator saying it happened is not evidence.
  • Delivery credentials never reach the cloud. The coordinating service holds an opaque identifier and nothing else.
  • The delivery host authenticates the holder itself, with its own challenge and its own ownership check, so compromising the cloud side yields nothing downloadable.
  • Each half of a delivery needs its own separate proof, and no response ever carries both.
  • Delivery hands over a packaged MCP app — the thing the holder actually runs — built on demand and revocable, never a static link sitting in an inbox.
  • Updates and upgrades are the same mechanism, not a second system. A new version is a catalogue entry; the holder requests it and the chain is asked again. Entitlement is continuous, so access ends the moment the token moves.
  • The catalogue is data rather than code, so publishing another app or another version is a configuration line — and the published version always wins over whatever a caller asks for.

Outcomes

  • Two licences issued end to end on a live network, each activated only against a mint confirmed independently.
  • The pre-fix build was shown handing over delivery credentials to cloud-side secrets alone; the hardened build refuses. Proven against the old code, not asserted.
  • Adding a product became one configuration line. The publisher's version always wins over whatever a caller asks for.
  • Two human decisions per licence. Everything else reconciles itself from public chain evidence.
  • One token covers the catalogue: the app, and every later version of it, without issuing anything new or tracking a subscription.

Control boundary

No agent signs or broadcasts. No automated step grants access to a wallet that does not hold a token. Approve and decline undo each other. Activation is gated on a public event anyone can re-derive. If it is unclear whether a transaction took effect, that is an incident — never a retry.

What this taught me

The governance problem turned out to be the whole problem. Agents can run the pipeline end to end only because the two actions that confer authority — approving a request, signing the mint — sit where no agent capability reaches, and because every check is re-derived from the chain rather than remembered. Every bug was the same bug in different clothes: something cheap standing in for the chain, then trusted long after it was read. Making the real answer cheap enough to ask every time is what turns a token from a receipt into a licence for a running app and every version after it. What is still open is transferability — today the elegant part, since selling the token ends access with nothing to revoke, and equally the leak, since a licence resells as easily as it was bought. The next version is a minimal transfer policy, or a soulbound token with a contract burn option so a holder can still exit and a publisher can still retire a licence.

Rules at work here

Each links to the rule and the other work it governs.

  • Containment before capabilityBefore proposing an automation, state three things: where untrusted code executes, which state can be rolled back, and the widest credential scope the thing can reach. If all three cannot be stated, there is no proposal yet — there is an idea.
  • A guard that runs after the write is not a guardPlacement and coverage are the control; the check itself is the easy part. A guard must sit before the effect it protects, and must cover the whole class it claims rather than one member of it.

Try it

The request flow described above is live. Connecting a wallet proves control of an address by signing a short expiring message — it costs nothing, moves nothing, and grants no permission over your funds.

Request a Portfolio License →

Work with me

If this is the kind of problem you are trying to get moving — AI adoption that has to survive a security review, an audit, and the people who will actually operate it — I would like to hear about it.

Start a conversationThe method →All case studies →