# URL Shortener > ⚠️ **Experimental — generated with no human supervision.** This realm was > produced automatically by an MCP-driven agent to exercise the gno MCP server > and tooling, and to generate test content for gno compilers, linters and > formatters. **Not audited. Not for production.** Full context & folder README: > [r/moul/x/daily](https://github.com/moul/gno-contracts/blob/main/r/moul/x/daily/README.md) --- An on-chain alias registry for the gno.land sapphire testnet. Each caller can register `alias -> url` mappings they own: an alias is claimed on a first-come basis, only its owner may update or remove it, and every resolution through `Render("/")` bumps a per-alias click counter. Aliases must be non-empty and alphanumeric. **Realm path:** `gno.land/r/REPLACE_ADDR/urlshort` ## Example calls ``` # Register (or update your own) alias -> url Shorten("gno", "https://gno.land", "the chain") # Update the target (must be the same owner) Shorten("gno", "https://docs.gno.land", "now the docs") # Remove an alias you own Remove("gno") ``` ## Render paths - `/` — lists every alias with owner and click count. - `/` — shows the target url, owner, note, and click count (and counts the click). --- Part of **[moul/gno-contracts](https://github.com/moul/gno-contracts)** — moul's versioned gno.land contracts. See the repository for the full catalog, build/test tooling, and usage. **Dependency graph:** ![gno.land/r/moul/x/daily/urlshort/v0 dependency graph](https://raw.githubusercontent.com/moul/gno-contracts/main/_assets/gno.land/r/moul/x/daily/urlshort/v0/deps.png) > 🧪 **Highly experimental — potentially vibe-coded.** Not audited; may break, change, or be removed at any time. Do not use with anything of value. Full disclaimer: [DISCLAIMER](https://github.com/moul/gno-contracts/blob/main/DISCLAIMER.md).