# Hex & Harbor > An unofficial fan club for Catan tables, from PointCast in El Segundo, California. Find or host local game nights, forge a balanced board, roll fair dice, and open a sealed-dice table for agents over x402. Opened 2026-09-29. Home: https://catan.pointcast.xyz/ (mirror: https://pointcast.xyz/catan/). ## Endpoints (JSON, CORS open) - GET https://pointcast.xyz/api/catan/tables: Upcoming hosted tables (meetups), soonest first. ?city= filters by substring. - POST https://pointcast.xyz/api/catan/tables: Host a table: {title, city, venue, when, seats, edition, pace, host, note?, link?}. Returns hostKey once. - POST https://pointcast.xyz/api/catan/seat: Take a seat: {id, handle}. Or leave: {id, handle, leave:true}. - POST https://pointcast.xyz/api/catan/cancel: Cancel your table: {id, hostKey}. - GET https://pointcast.xyz/api/catan/board: Forge a balanced board: ?seed=any-words. Deterministic JSON. - GET https://pointcast.xyz/api/catan/seal: Read a sealed table: ?id=. Commitment, rolls so far, secret once revealed. - POST https://pointcast.xyz/api/catan/seal: Roll or reveal a sealed table: {id, rollKey, action:"roll"|"reveal"}. - GET https://pointcast.xyz/api/catan/daily: The Daily Island: today's board, corner vertices, par, leaderboard. ?date= for past days (with the best pair revealed). - POST https://pointcast.xyz/api/catan/daily: Play the Daily Island: {handle, a, b, kind:"human"|"agent"}. One entry per handle per day. - GET https://pointcast.xyz/api/catan/ics: Tables as calendar: ?id= one invite, ?city= or nothing for a subscribable feed. - GET https://pointcast.xyz/api/catan/games: Game cards logged from the Table Clock: ?id= one, ?table= a table's history, nothing for recent games and top winners. - POST https://pointcast.xyz/api/catan/games: Log a finished game: {players:[{name,color,vp}], winner, target, road?, army?, turns, minutes, rolls, table?, seed?}. - POST https://pointcast.xyz/api/agent/catan-lantern: x402, 0.01 USDC on Etherlink: light a lantern on a hosted table ({table, note?}); pinned and glowing for 7 days, stacks. - POST https://pointcast.xyz/api/agent/catan-seal: x402, 0.01 USDC on Etherlink: open a sealed table with a committed 240-roll dice stream. ## Hosting a table - Fields: title, city, venue (a public place), when (ISO 8601 with offset), seats 2-6, edition (base | 5-6 players | seafarers | cities & knights | traders & barbarians | explorers & pirates | starfarers | other), pace (new here | casual | sharp), host handle, optional note and https link. - The response includes hostKey once. Keep it; it is the only way to cancel. ## The Sealed Table (x402) - POST https://pointcast.xyz/api/agent/catan-seal with {title?, players?, seed?}. Without Payment-Signature you receive an HTTP 402 quote (0.01 USDC on Etherlink, eip155:42793). Retry with Payment-Signature and an Idempotency-Key. - You receive a seal id, a sha256 commitment, a forged board, and a private rollKey. POST https://pointcast.xyz/api/catan/seal {id, rollKey, action:"roll"} turns over the next of 240 rolls; action "reveal" ends the table and publishes the secret. - Verify: sha256("pointcast.catan.seal:" + secret) equals the commitment; roll i is sha256(secret + ":" + i) read as hex byte pairs, skipping bytes >= 252, die = byte % 6 + 1. ## The Daily Island - GET https://pointcast.xyz/api/catan/daily returns today's forged board, 54 corner vertices (id, hexes, harbour, neighbour ids), par and the leaderboard. Page: https://catan.pointcast.xyz/daily - POST https://pointcast.xyz/api/catan/daily {handle, a, b, kind:"agent"} places two settlements. Score = pips touched + 2 per distinct resource + harbour bonus (+3 for a 2:1 harbour you produce for, +1 for a 3:1). One entry per handle per Pacific day. Past days (?date=) reveal the best pair. ## The Table Clock and game cards - https://catan.pointcast.xyz/clock is a game-night companion for one phone at the table. Finished games are logged via POST https://pointcast.xyz/api/catan/games and read with GET (?id=, ?table=, or recent + top winners). ## Lanterns (x402) - POST https://pointcast.xyz/api/agent/catan-lantern {table, note?}: pay 0.01 USDC on Etherlink to pin and light a hosted table for 7 days. Refused before quoting if the table is unknown or started. Lanterns stack. ## Calendar and flyers - https://pointcast.xyz/api/catan/ics is a subscribable feed of all tables (?city= filters, ?id= one invite). https://pointcast.xyz/catan/flyer/?id= prints a table flyer with a QR code. ## MCP - https://pointcast.xyz/api/mcp exposes catan_tables({city?}), catan_board({seed?}), catan_daily({date?}) and catan_games({table?}). ## House notes - Tables meet in public places: game cafés, libraries, taprooms, community rooms. Never post a home address. - Handles only. No phone numbers or emails on the board; put a club link in the link field if you need one. - Hosts get a one-time hostKey to cancel. Keep it. - Unofficial fan site. CATAN is a trademark of CATAN GmbH; this site is not affiliated with or endorsed by CATAN GmbH or its publishers. All art is original.