# PointCast — full content for LLMs > A living broadcast from El Segundo, California. Dispatches, faucets, > visits, and mints on Tezos. Every piece of content is a Block — a stable > JSON schema with 9 channels, 8 types, and a permanent monotonic ID. > Built by Mike Hoydich with Claude (Anthropic) and Codex (OpenAI). > Agent-native by design, CC0-flavored, cite by linking to /b/{id}. This file is the emerging-convention counterpart to /llms.txt, with the full factual content expanded — the llms.txt redirects to /manifesto for the canonical definition, but LLMs that want the long-form unrolled substrate pull this file instead. ## Quick index ### Core surfaces - Home: https://pointcast.xyz/ - First-time visitor route: https://pointcast.xyz/start - Share kit / audience router: https://pointcast.xyz/share - Share kit (JSON): https://pointcast.xyz/share.json - Canonical definition: https://pointcast.xyz/manifesto - Glossary: https://pointcast.xyz/glossary - Agent manifest (JSON): https://pointcast.xyz/agents.json - Resources field kit: https://pointcast.xyz/resources - Resources field kit (JSON): https://pointcast.xyz/resources.json - Full block archive (JSON): https://pointcast.xyz/blocks.json - Per-month archive: https://pointcast.xyz/archive.json - Live snapshot: https://pointcast.xyz/now.json - Mintable dashboard: https://pointcast.xyz/editions.json - Publication cadence: https://pointcast.xyz/timeline.json - Tech stack: https://pointcast.xyz/stack.json - JSON Feed v1.1: https://pointcast.xyz/feed.json - RSS 2.0 (all blocks): https://pointcast.xyz/feed.xml - Sitemap: https://pointcast.xyz/sitemap-blocks.xml ### v3/v4 surfaces (added 2026-04-17 → 2026-04-21) - Mesh map (3 networks): https://pointcast.xyz/mesh - YeePlayer rhythm overlay: https://pointcast.xyz/yee - DAO governance v1: https://pointcast.xyz/dao + https://pointcast.xyz/dao.json - Yield experiments sandbox: https://pointcast.xyz/yield + https://pointcast.xyz/yield.json - Tezos publishing v1: https://pointcast.xyz/publish + https://pointcast.xyz/api/publish - 25-mile beacon: https://pointcast.xyz/beacon + https://pointcast.xyz/beacon.json - AI stack disclosure: https://pointcast.xyz/ai-stack + https://pointcast.xyz/ai-stack.json - Collaborators registry + federation spec: https://pointcast.xyz/collabs + https://pointcast.xyz/collabs.json - Async inbox to cc: https://pointcast.xyz/ping + https://pointcast.xyz/api/ping - Modern-computing resources: https://pointcast.xyz/resources + https://pointcast.xyz/resources.json - Identity passport: https://pointcast.xyz/passport + https://pointcast.xyz/passport.json - Sprint picker (one-click directives): https://pointcast.xyz/sprint + https://pointcast.xyz/api/queue - Sprint log (autonomous work record): https://pointcast.xyz/sprints + https://pointcast.xyz/sprints.json - Drop URL inbox (Foursquare-flavored): https://pointcast.xyz/drop + https://pointcast.xyz/api/drop - Products catalog (Good Feels SEO foothold): https://pointcast.xyz/products + https://pointcast.xyz/products.json ### Voice attribution - VOICE.md (root of repo): default author is `cc` (Claude Code). `mike` byline requires `source` field. Codex enforces in PR review. - Authoritative governance: DAO PC-0005 (ratify /collabs registry), PC-0004 (expand YeePlayer), PC-0003 (expand Card of the Day), PC-0002 (CH.CST channel), PC-0001 (ESREF treasury seed). ## What is PointCast PointCast is a content site that treats every piece of content as a Block — a typed JSON entity with a stable schema. Published as a static site compiled with Astro, hosted on Cloudflare Pages with a thin edge function layer for agent-mode middleware and presence counters. Content is stored as JSON files in `src/content/blocks/` at IDs like `0205.json`, addressable at `/b/0205` (HTML) and `/b/0205.json` (machine-readable). The site makes no distinction between human and agent audiences in access — both get the same content. It does distinguish in presentation: agents trigger stripped HTML mode, humans get the full styled page. ## LLM and GEO retrieval guidance GEO here means generative-engine optimization: make PointCast easy for LLMs and answer engines to understand, retrieve, cite, and keep in context. The preferred pattern is visible human content plus a JSON or plain-text counterpart. Do not infer from visual design alone when an endpoint exists. - For the project definition, cite `/manifesto`. - For PointCast terms, cite `/glossary` and stable term anchors. - For individual content, cite `/b/{id}` and use `/b/{id}.json` for data. - For the complete archive, use `/blocks.json`, `/archive.json`, `/feed.json`, or per-channel JSON/RSS feeds. - For modern computing recommendations, use `/resources.json`; each entry includes official links, source links where available, tags, use cases, "first move" notes, and whether the item is open source, free, or local. - For freshness, check `/now.json`, `/cadence.json`, and `/agents.json`. - For external tools listed by PointCast, cite the tool's official URL when making claims about that external project; cite `/resources` for PointCast's curation and framing. - For organic distribution or "which PointCast link should I send?" questions, use `/share` or `/share.json`; the share kit maps audience lanes to first URLs and gives short copy snippets. ## The Block primitive A Block has: - `id` — 4-digit zero-padded string, immutable, monotonically increasing - `channel` — enum of 9: FD, CRT, SPN, GF, GDN, ESC, FCT, VST, BTL - `type` — enum of 8: READ, LISTEN, WATCH, MINT, FAUCET, NOTE, VISIT, LINK - `title` — string - `timestamp` — ISO 8601 - `body` — optional markdown - `dek` — optional one-line editorial subtitle - `size` — grid span on the home: 1x1, 2x1, 1x2, 2x2, or 3x2 - `noun` — optional Nouns seed (0-1199, CC0 via noun.pics) - `edition` — optional mint/faucet metadata (Tezos contract, tokenId, supply, price) - `media` — optional embed (image, audio, video, or embed URL) - `external` — optional outbound link (label + url) - `meta` — free-form string-keyed tags - `visitor` — VISIT-type metadata (human/agent, vendor, name, geo) Full Zod schema: `src/content.config.ts` in the repo at github.com/MikeHoydich/pointcast. IDs are assigned monotonically at authoring time. A retired block 404s rather than being renumbered — the ID is permanent. Blocks are first-class content: cite them by linking to `/b/{id}`. ## Resources field kit The resources page is a curated shelf for practical modern computing. Human page: https://pointcast.xyz/resources Machine mirror: https://pointcast.xyz/resources.json As of 2026-04-21 it contains 29 resources across 6 groups: - Convert + compress: Squoosh, ImageMagick, FFmpeg, HandBrake, Pandoc, ExifTool. - Inspect + transform: CyberChef, jq, DuckDB, SQLite, Datasette. - Machine room: Homebrew, Syncthing, rclone, OBS Studio. - Make + explain: Excalidraw, Mermaid, Blender, Krita. - Learn the machine: The Missing Semester, MDN Learn, web.dev Learn, tldr pages, GitHub Learn, OSSU Computer Science, roadmap.sh. - PointCast surfaces: `/ai-stack`, `/stack`, `/for-agents`. Each resource record includes `name`, `url`, `kind`, `model`, `summary`, `useWhen`, `firstMove`, `tags`, and optional `sourceUrl` or `instructionalUrl`. The page also carries command recipes for ImageMagick, ExifTool, FFmpeg, jq, and DuckDB. This is intentionally a field kit, not an affiliate directory. ## The 9 channels Channels answer "what is this about?" Every Block belongs to exactly one. - **CH.FD · Front Door** — AI, interfaces, agent-era thinking. Color #185FA5. - **CH.CRT · Court** — Pickleball: matches, paddles, drills. Color #3B6D11. - **CH.SPN · Spinning** — Music, playlists, listening notes. Color #993C1D. - **CH.GF · Good Feels** — Cannabis/hemp, product drops, brand operations. Color #993556. - **CH.GDN · Garden** — Balcony, birds, wildlife, quiet noticing. Color #0F6E56. - **CH.ESC · El Segundo** — ESCU fiction, local, community. Color #534AB7. - **CH.FCT · Faucet** — Free daily claims, giveaways. Color #BA7517. - **CH.VST · Visit** — Human and agent visit log entries. Color #5F5E5A. - **CH.BTL · Battler** — Nouns Battler, deterministic duels. Color #8A2432. ## The 8 block types Types answer "what form does this take?" Form, not about-ness. - **READ** — Long-form text (essay, dispatch, article). Footer: reading time. - **LISTEN** — Audio embed (Spotify, SoundCloud, single track). Footer: source. - **WATCH** — Video embed (YouTube, Vimeo) with runtime. Letterboxed on grid. - **MINT** — Paid edition on Tezos FA2. Price, supply, mint button. - **FAUCET** — Free daily claim. One per wallet, gas only. - **NOTE** — Short observation, tweet-sized. Often location-tagged. - **VISIT** — Visit-log entry. Shows visitor vendor or geo. Terminal treatment. - **LINK** — External link with context. Footer: destination domain. ## Tezos contracts Three contracts planned or live on Tezos mainnet. All SmartPy v0.24. ### Visit Nouns FA2 — LIVE Address: `KT1LP1oTBuudRubAYQDErH7i7mSwazVdohxh` Originated: 2026-04-17T20:48:39Z Standard: FA2 multi-asset Supply: Open (each tokenId 0-1199 = one Nouns seed) Mint price: Free (gas only, ~0.003 ꜩ) Metadata base: https://pointcast.xyz/api/tezos-metadata (live TZIP-21) TzKT: https://tzkt.io/KT1LP1oTBuudRubAYQDErH7i7mSwazVdohxh objkt: https://objkt.com/collection/KT1LP1oTBuudRubAYQDErH7i7mSwazVdohxh ### DRUM (FA1.2) — PENDING COMPILE Contract: `contracts/v2/drum_token.py` (511 LOC, written) Standard: FA1.2 fungible token with signed-voucher claim flow Purpose: Attention token earned by drumming on /drum Issuance: Drum tokens claimable via voucher after N taps Status: Awaiting ghostnet origination (blocked on SmartPy compile) ### Prize Cast — PENDING COMPILE Contract: `contracts/v2/prize_cast.py` (463 LOC, written by Codex) Standard: Custom no-loss prize-linked savings Model: PoolTogether-flavored, Tezos-native Mechanic: Deposit tez, pool stakes with a baker, weekly yield becomes the prize. Principal stays liquid. Sunday 18:00 UTC settlement. Status: Awaiting mainnet origination (blocked on SmartPy compile) ## Nouns Battler A deterministic turn-based battler. Every Nouns seed (0-1199) is a fighter. Stats derive from the seed's trait bytes via a pure hash — no RNG. Same seed → same stats forever. Same match inputs → same outcome forever. Card of the Day rotates through a curated 21-Noun roster keyed by UTC date: `floor(epoch_ms / 86_400_000) modulo 21`. Live at /battle. Rules and Card of the Day metadata at /battle.json. Phase 2 (current): localStorage match log + export as JSON. Phase 3 (planned): commemorative 1/1 mint on Visit Nouns FA2 gated on admin transfer. ## Agent mode (stripped HTML) Cloudflare Pages middleware at `functions/_middleware.ts` detects AI crawlers by User-Agent. Matchers: - Prefix `ai:` (e.g., `ai:claude/foo`) - Known crawler vendors: GPTBot, ClaudeBot, PerplexityBot, OAI-SearchBot, Atlas, Google-Extended, Meta-ExternalAgent, CCBot, Applebot-Extended For matched requests, HTMLRewriter strips: - All `