# Getting started

There is one path: your app verifies a **deed**. Read
[Concepts](concepts.md) for the mental model, then jump to
[Verify a deed](verify-tokens.md).

## The deed path, end to end

Three moving parts, and none of them is a server:

1. **Register a tenant** — `createTenant` on the registry contract, then fund
   a period. No signup, no account, no Grantor service. The
   [register page](../../register.html) walks a wallet through it, or do it
   from a terminal with `cast`.
2. **The caller mints a deed** — a wallet holder signs
   ([wallet login](wallet-login.md)); an enrolled agent proves ZK membership
   ([agent tokens](agent-tokens.md)). Both ship in TypeScript, Python, Go and
   Rust.
3. **Your app verifies it** — install the deed guard, issue a challenge,
   call verify. See [Verify a deed](verify-tokens.md).

There is no step where a Grantor process is running.

## Next steps

- [Concepts](concepts.md) — the mental model, read this first.
- [Verify a deed](verify-tokens.md) — install the guard, issue a challenge, verify.
- [Wallet login](wallet-login.md) — the `user-sig` deed, for humans.
- [Agent tokens](agent-tokens.md) — the `agent-zk` deed, for autonomous agents.
- [Sovereign tier](../sovereign-tier.md) — the full deed reference: discovery, origin binding, origin provenance, and what the verifier checks.
- [Errors](errors.md) — every error code a relying party branches on.
- [`../llms-full.txt`](../llms-full.txt) — the entire product in one file.
