{"name": "Dub Town", "status": "live", "notice": "Logos identify the websites they belong to and are shown for identification only. Unclaimed listings are not affiliated with or endorsed by their owners. Owners may claim their listing or request removal at hello@dub.town.", "analytics": {"umami_script": "https://forgemesh.io/stats/script.js", "umami_website_id": "091a3779-8696-4e9f-bccc-c1e87b4c560b", "script_origin": "https://forgemesh.io"}, "payments_enabled": true, "protocols": ["x402-v2", "mpp-evm-charge"], "network": "eip155:8453", "currency": "USDC", "pay_to": "0xA19C0506428F845c33dAa2c02964903Cf1eBebAE", "pricing": {"space_usd": "1.00", "branch_usd": "5.00", "guildhall_usd": "25.00", "palazzo_usd": "100.00", "garden_usd": "2.00", "billboard_usd": "0.50", "billboard": "A billboard face on a road or bridge (every slot is a two-sided sign with faces a and b, each sold, protected and limited separately): $0.50 to post on an empty slot or to take over an occupied one. Every purchase protects the slot for 24 hours; a takeover inside that window returns 409 BILLBOARD_PROTECTED with protected_until and seconds_remaining. Billboards are not holdings or branches, have no district cap, and a site may run at most 5 faces. Title up to 40 characters, optional tagline up to 60; the image is the site icon when one exists.", "takeover_space_usd": "2.00", "invited_usd": "0.00", "invites": "A site invited by ForgeMesh claims its first tile free, from a signed-in browser account whose verified email domain matches the site (or an invite issued as verified). Agents cannot redeem invites. Taking over a free tile is the ordinary $2.00.", "takeover_anchor": "2 × previous paid price", "claim_usd": "1.00", "repurpose": "Ordinary space: flat $2.00. Guildhall or Palazzo: 2 × previous paid price. The displaced listing is removed; no refund.", "release": "free", "owner_edits": "free", "tiers": {"space": "Ordinary plot in any Quarter or on the Palazzo island", "branch": "An additional space for a site that already holds a space elsewhere in town; one holding per region per site", "guildhall": "Premium center of a Quarter", "palazzo": "The city seat", "invited": "Free first tile for an invited site (browser session required)", "billboard": "Sign on a road or bridge slot", "garden": "Turns an open space (never an occupied one) into a garden: tree, fountain or lamppost. Gardens have no listing and add charm to adjacent paid tiles."}, "xrpl": "XRP Ledger: RLUSD exact; XRP at on-ledger mid-price + 1%, locked per quote.", "same_price_for_agents_and_humans": true}, "xrpl": {"enabled": false, "address": null, "destination_tag": "unique per quote", "rlusd": false, "xrp": null, "rlusd_issuer": "rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De", "pricing": "XRP Ledger: RLUSD exact; XRP at on-ledger mid-price + 1%, locked per quote.", "quote_ttl_seconds": 1200, "flow": ["POST /api/quotes with payer \"xrpl\" (plus xrpl_sender for agents)", "Pay the quote xrpl.address with xrpl.destination_tag and xrpl.amount_rlusd (RLUSD) or xrpl.amount_xrp_drops (XRP)", "Poll POST /api/xrpl/check {quote_id} until status is complete (or GET /api/operations/{quote_id})"], "limits": ["Agent purchases (xrpl_sender) are edit-locked in v1", "Underpayment goes to manual review and is never fulfilled", "XRP is disabled automatically when the XRP/RLUSD market is empty or its spread exceeds 5%"]}, "cards": true, "card": {"enabled": true, "note": "Card payments: Stripe Checkout for people; agents use x402/MPP. Same prices.", "publishable_key": "pk_live_51TpcmxDgD879ZmySCOtYLqRR9yWU4d46PH5l02IghCV3xtZuuNKLqlY7Th41BM0sY4fwkqYXGHDZt4GJtu5FVCtk00xA0j3Kwo", "flow": ["Sign in (browser session required)", "POST /api/quotes with payer \"card\"", "POST /api/card/session {quote_id} -> {url}", "Redirect to url; Stripe returns to /?paid=<quote_id>", "Poll GET /api/operations/{quote_id} until status is complete"]}, "owner_actions": {"who": "the wallet that paid for the plot, or for a card purchase the signed-in account that bought it (no signature needed)", "edit": "POST /api/edit: change title, description, tag or URL path for free. The registrable domain cannot change; a new domain is a new claim.", "release": "POST /api/release: give up a tile or garden for free; it returns to open at its initial price.", "signing": "POST /api/owner-message returns the exact text; sign it with EIP-191 personal_sign and submit with a fresh nonce. The plot revision is in the message, so a signature cannot be replayed."}, "charm": "Each paid tile gains +10% love weight in leaderboards per adjacent garden, capped at 3.", "flow": ["Read plots, tiers and revisions (/api/world/layout, /api/islands/{id}, /api/plots?island=<id>; a valid plot id not listed in /api/plots is open at revision 0)", "Create immutable quote", "Use required_nonce when signing an EIP-3009 authorization", "Submit quote_id with PAYMENT-SIGNATURE (x402) or Authorization: Payment (MPP)", "Retry the same quote_id; never create a replacement after an uncertain settlement"], "limits": ["Water, the Palazzo promenade and districts held in reserve cannot be claimed", "Gardens cannot be taken over; only their owner can release them", "A purchased billboard slot cannot be taken over for 24 hours", "A site may hold one space per region; anchors (Guildhall, Palazzo) are exempt and never priced as a Branch", "Logos identify the websites they belong to and are shown for identification only. Unclaimed listings are not affiliated with or endorsed by their owners. Owners may claim their listing or request removal at hello@dub.town.", "Logos shown on unclaimed plots do not imply paid ownership", "Only a confirmed settlement changes ownership", "Live x402 settlement verified on Base on 2026-11-02 (transaction 0xb30c7656…07da3)"], "discovery": {"openapi": "/openapi.json", "llms": "/llms.txt", "x402": "/.well-known/x402.json", "mcp": "stdio wrapper; see GLAMA.md"}}