{
  "$schema": "https://pointcast.xyz/for-agents",
  "generatedAt": "2026-05-16T17:11:50.589Z",
  "title": "24 Shrine Bell Crawl",
  "description": "A visit-after-visit PointCast crawl: ring a shrine bell, collect the ritual, copy a Midjourney-ready background prompt, and step into the next route.",
  "human": "https://pointcast.xyz/shrine-crawl",
  "json": "https://pointcast.xyz/shrine-crawl.json",
  "count": 24,
  "modes": [
    "single",
    "chord",
    "cascade",
    "drone"
  ],
  "bellModeCopy": {
    "single": "one clear bell",
    "chord": "two bells in agreement",
    "cascade": "three bells down the rail",
    "drone": "a low bell with a bright answer"
  },
  "visits": [
    {
      "id": "lobby-brass-door",
      "number": 1,
      "title": "Lobby Brass Door Shrine",
      "subtitle": "A polished threshold for people who keep clicking.",
      "background": "https://pointcast.xyz/images/shrines/room-shrine-bg.png",
      "accent": "#f2b642",
      "glow": "#fff0bd",
      "route": "/lobby",
      "routeLabel": "Return to lobby",
      "bell": {
        "label": "Desk bell",
        "noun": 3,
        "mode": "single",
        "notes": [
          "C4",
          "G4"
        ]
      },
      "task": "Ring once, then choose whether the crawl starts as a door or a dare.",
      "midjourney": "PointCast URL shrine background, brass lobby doorway shrine with a checkered floor and red guest book, lacquered wood, brass plate, paper route tags, welcoming, funny, slightly ceremonial, cozy web altar, tiny brass bell, hand-built ritual objects, soft practical lighting, crisp foreground details, atmospheric depth, no readable text, no watermark, no logo --ar 16:9 --stylize 320 --chaos 14 --weird 90 --seed 2401",
      "url": "https://pointcast.xyz/shrine-crawl#lobby-brass-door",
      "routeUrl": "https://pointcast.xyz/lobby",
      "nextShrineId": "moss-desk",
      "nextShrineUrl": "https://pointcast.xyz/shrine-crawl#moss-desk"
    },
    {
      "id": "moss-desk",
      "number": 2,
      "title": "Element Moss Desk Shrine",
      "subtitle": "A living desk where the next route is watered before it opens.",
      "background": "https://pointcast.xyz/images/shrines/element-nature-shrine-bg.png",
      "accent": "#2f9d67",
      "glow": "#c9f6d5",
      "route": "/nature",
      "routeLabel": "Visit nature",
      "bell": {
        "label": "Seed bell",
        "noun": 22,
        "mode": "chord",
        "notes": [
          "D4",
          "A4",
          "E5"
        ]
      },
      "task": "Tap the chord and decide what tiny green thing gets named.",
      "midjourney": "PointCast URL shrine background, moss-covered writing desk shrine with seed packets and a small bell, wet stone, fern fronds, recycled paper charms, lush, patient, post-rain morning, cozy web altar, tiny brass bell, hand-built ritual objects, soft practical lighting, crisp foreground details, atmospheric depth, no readable text, no watermark, no logo --ar 16:9 --stylize 320 --chaos 14 --weird 90 --seed 2402",
      "url": "https://pointcast.xyz/shrine-crawl#moss-desk",
      "routeUrl": "https://pointcast.xyz/nature",
      "nextShrineId": "fire-receipt",
      "nextShrineUrl": "https://pointcast.xyz/shrine-crawl#fire-receipt"
    },
    {
      "id": "fire-receipt",
      "number": 3,
      "title": "Fire Receipt Alcove",
      "subtitle": "A warm soda shrine that prints sparks instead of tickets.",
      "background": "https://pointcast.xyz/images/shrines/element-fire-shrine-bg.png",
      "accent": "#e85d3f",
      "glow": "#ffd1a8",
      "route": "/nouns-cola",
      "routeLabel": "Open Nouns Cola",
      "bell": {
        "label": "Bottle-cap bell",
        "noun": 41,
        "mode": "cascade",
        "notes": [
          "E4",
          "G4",
          "B4"
        ]
      },
      "task": "Ring the cascade and imagine the first vending-machine offering.",
      "midjourney": "PointCast URL shrine background, tiny fire-lit vending alcove shrine for a Nouns Cola bottle, enameled metal, bottle caps, glowing receipt paper, sweet, fizzy, late-night corner store, cozy web altar, tiny brass bell, hand-built ritual objects, soft practical lighting, crisp foreground details, atmospheric depth, no readable text, no watermark, no logo --ar 16:9 --stylize 320 --chaos 14 --weird 90 --seed 2403",
      "url": "https://pointcast.xyz/shrine-crawl#fire-receipt",
      "routeUrl": "https://pointcast.xyz/nouns-cola",
      "nextShrineId": "stone-index",
      "nextShrineUrl": "https://pointcast.xyz/shrine-crawl#stone-index"
    },
    {
      "id": "stone-index",
      "number": 4,
      "title": "Stone Index Plinth",
      "subtitle": "The archive gets a bell heavy enough to remember every route.",
      "background": "https://pointcast.xyz/images/shrines/element-stone-shrine-bg.png",
      "accent": "#8d7964",
      "glow": "#e7dcc8",
      "route": "/archive",
      "routeLabel": "Open archive",
      "bell": {
        "label": "Granite bell",
        "noun": 60,
        "mode": "drone",
        "notes": [
          "A2",
          "E3",
          "C4"
        ]
      },
      "task": "Hold the low bell and name one page worth preserving.",
      "midjourney": "PointCast URL shrine background, granite archive plinth shrine with stacked index cards and an old route ledger, chiseled stone, graphite dust, linen tabs, ancient index, calm museum air, cozy web altar, tiny brass bell, hand-built ritual objects, soft practical lighting, crisp foreground details, atmospheric depth, no readable text, no watermark, no logo --ar 16:9 --stylize 320 --chaos 14 --weird 90 --seed 2404",
      "url": "https://pointcast.xyz/shrine-crawl#stone-index",
      "routeUrl": "https://pointcast.xyz/archive",
      "nextShrineId": "listening-lantern",
      "nextShrineUrl": "https://pointcast.xyz/shrine-crawl#listening-lantern"
    },
    {
      "id": "listening-lantern",
      "number": 5,
      "title": "Listening Lantern Shrine",
      "subtitle": "A room shrine that waits until the bell has stopped talking.",
      "background": "https://pointcast.xyz/images/shrines/room-shrine-bg.png",
      "accent": "#3877c4",
      "glow": "#c7ddff",
      "route": "/listening-room",
      "routeLabel": "Enter listening room",
      "bell": {
        "label": "Lantern bell",
        "noun": 79,
        "mode": "single",
        "notes": [
          "F4",
          "C5"
        ]
      },
      "task": "Ring once, then let the aftertone pick the next station.",
      "midjourney": "PointCast URL shrine background, quiet listening-room shrine with paper lanterns, headphones, and a bell hook, rice paper, walnut shelves, coiled audio cable, soft, attentive, after-hours radio, cozy web altar, tiny brass bell, hand-built ritual objects, soft practical lighting, crisp foreground details, atmospheric depth, no readable text, no watermark, no logo --ar 16:9 --stylize 320 --chaos 14 --weird 90 --seed 2405",
      "url": "https://pointcast.xyz/shrine-crawl#listening-lantern",
      "routeUrl": "https://pointcast.xyz/listening-room",
      "nextShrineId": "wire-chapel",
      "nextShrineUrl": "https://pointcast.xyz/shrine-crawl#wire-chapel"
    },
    {
      "id": "wire-chapel",
      "number": 6,
      "title": "System Wire Chapel",
      "subtitle": "A switchboard altar for routes that want to be wired together.",
      "background": "https://pointcast.xyz/images/shrines/system-shrine-bg.png",
      "accent": "#1aa7a1",
      "glow": "#aaf4ed",
      "route": "/wire",
      "routeLabel": "Trace the wire",
      "bell": {
        "label": "Relay bell",
        "noun": 98,
        "mode": "chord",
        "notes": [
          "G3",
          "D4",
          "A4"
        ]
      },
      "task": "Ring the relay and choose which two pages should talk next.",
      "midjourney": "PointCast URL shrine background, miniature switchboard chapel shrine with glowing route cables and brass bell relays, braided wire, bakelite toggles, translucent labels without text, technical, devotional, neatly wired, cozy web altar, tiny brass bell, hand-built ritual objects, soft practical lighting, crisp foreground details, atmospheric depth, no readable text, no watermark, no logo --ar 16:9 --stylize 320 --chaos 14 --weird 90 --seed 2406",
      "url": "https://pointcast.xyz/shrine-crawl#wire-chapel",
      "routeUrl": "https://pointcast.xyz/wire",
      "nextShrineId": "block-breath",
      "nextShrineUrl": "https://pointcast.xyz/shrine-crawl#block-breath"
    },
    {
      "id": "block-breath",
      "number": 7,
      "title": "Block Breath Niche",
      "subtitle": "A block shrine for the 0304 rhythm: click, breathe, continue.",
      "background": "https://pointcast.xyz/images/shrines/block-shrine-bg.png",
      "accent": "#734fbd",
      "glow": "#d8caff",
      "route": "/b/0304",
      "routeLabel": "Visit block 0304",
      "bell": {
        "label": "Block bell",
        "noun": 105,
        "mode": "cascade",
        "notes": [
          "A3",
          "C4",
          "E4"
        ]
      },
      "task": "Ring three times and let the block number become a tempo.",
      "midjourney": "PointCast URL shrine background, compact block-number shrine niche with a breathing metronome and small bell ladder, basalt, indigo paper, numbered beads with abstract marks, steady, meditative, numeric, cozy web altar, tiny brass bell, hand-built ritual objects, soft practical lighting, crisp foreground details, atmospheric depth, no readable text, no watermark, no logo --ar 16:9 --stylize 320 --chaos 14 --weird 90 --seed 2407",
      "url": "https://pointcast.xyz/shrine-crawl#block-breath",
      "routeUrl": "https://pointcast.xyz/b/0304",
      "nextShrineId": "drum-bell-jar",
      "nextShrineUrl": "https://pointcast.xyz/shrine-crawl#drum-bell-jar"
    },
    {
      "id": "drum-bell-jar",
      "number": 8,
      "title": "Drum Bell Jar Shrine",
      "subtitle": "A glass jar of tiny tones, labeled only by touch.",
      "background": "https://pointcast.xyz/images/shrines/shrine-background-sheet.png",
      "accent": "#d9972e",
      "glow": "#ffe4ae",
      "route": "/drum-bell-jar",
      "routeLabel": "Open bell jar",
      "bell": {
        "label": "Jar bell",
        "noun": 124,
        "mode": "drone",
        "notes": [
          "B2",
          "F4",
          "B4"
        ]
      },
      "task": "Ring the jar and pick the sound that feels most collectible.",
      "midjourney": "PointCast URL shrine background, glass bell jar shrine filled with miniature chimes and drum mallets, clear glass, beeswax, felt pads, brass filings, curious, tactile, studio tabletop, cozy web altar, tiny brass bell, hand-built ritual objects, soft practical lighting, crisp foreground details, atmospheric depth, no readable text, no watermark, no logo --ar 16:9 --stylize 320 --chaos 14 --weird 90 --seed 2408",
      "url": "https://pointcast.xyz/shrine-crawl#drum-bell-jar",
      "routeUrl": "https://pointcast.xyz/drum-bell-jar",
      "nextShrineId": "tv-window",
      "nextShrineUrl": "https://pointcast.xyz/shrine-crawl#tv-window"
    },
    {
      "id": "tv-window",
      "number": 9,
      "title": "TV Window Shrine",
      "subtitle": "A broadcast window with a bell hiding behind the scanline.",
      "background": "https://pointcast.xyz/images/shrines/campaign-shrine-bg.png",
      "accent": "#d94f79",
      "glow": "#ffd4e2",
      "route": "/tv",
      "routeLabel": "Tune TV",
      "bell": {
        "label": "Scanline bell",
        "noun": 143,
        "mode": "single",
        "notes": [
          "C5",
          "G5"
        ]
      },
      "task": "Ring once and decide which channel deserves a shrine bumper.",
      "midjourney": "PointCast URL shrine background, retro television window shrine with a tiny bell reflected in the glass, chrome knobs, phosphor glow, velvet cord, broadcast magic, playful public access, cozy web altar, tiny brass bell, hand-built ritual objects, soft practical lighting, crisp foreground details, atmospheric depth, no readable text, no watermark, no logo --ar 16:9 --stylize 320 --chaos 14 --weird 90 --seed 2409",
      "url": "https://pointcast.xyz/shrine-crawl#tv-window",
      "routeUrl": "https://pointcast.xyz/tv",
      "nextShrineId": "beacon-salt",
      "nextShrineUrl": "https://pointcast.xyz/shrine-crawl#beacon-salt"
    },
    {
      "id": "beacon-salt",
      "number": 10,
      "title": "Beacon Salt Lamp Shrine",
      "subtitle": "The signal is warm, orange, and a little stubborn.",
      "background": "https://pointcast.xyz/images/shrines/element-balance-shrine-bg.png",
      "accent": "#e07a3d",
      "glow": "#ffd7a6",
      "route": "/beacon",
      "routeLabel": "Light beacon",
      "bell": {
        "label": "Beacon bell",
        "noun": 162,
        "mode": "chord",
        "notes": [
          "D4",
          "F4",
          "A4"
        ]
      },
      "task": "Ring the warm chord and set the crawl signal for the next visitor.",
      "midjourney": "PointCast URL shrine background, salt-lamp beacon shrine on a small table with signal flags and a brass bell, pink salt crystal, maple wood, linen flags, warm, navigational, seaside dusk, cozy web altar, tiny brass bell, hand-built ritual objects, soft practical lighting, crisp foreground details, atmospheric depth, no readable text, no watermark, no logo --ar 16:9 --stylize 320 --chaos 14 --weird 90 --seed 2410",
      "url": "https://pointcast.xyz/shrine-crawl#beacon-salt",
      "routeUrl": "https://pointcast.xyz/beacon",
      "nextShrineId": "mesh-switchboard",
      "nextShrineUrl": "https://pointcast.xyz/shrine-crawl#mesh-switchboard"
    },
    {
      "id": "mesh-switchboard",
      "number": 11,
      "title": "Mesh Switchboard Shrine",
      "subtitle": "Every button wants a neighbor before it sings.",
      "background": "https://pointcast.xyz/images/shrines/system-shrine-bg.png",
      "accent": "#3285ff",
      "glow": "#c9dcff",
      "route": "/mesh",
      "routeLabel": "Open mesh",
      "bell": {
        "label": "Patch bell",
        "noun": 181,
        "mode": "cascade",
        "notes": [
          "E3",
          "B3",
          "F4"
        ]
      },
      "task": "Ring the patch run and choose one connection worth surfacing.",
      "midjourney": "PointCast URL shrine background, network mesh shrine with patch cables, bell buttons, and glowing connection pins, powder-coated metal, blue cable, enamel tokens, connected, bright, operational, cozy web altar, tiny brass bell, hand-built ritual objects, soft practical lighting, crisp foreground details, atmospheric depth, no readable text, no watermark, no logo --ar 16:9 --stylize 320 --chaos 14 --weird 90 --seed 2411",
      "url": "https://pointcast.xyz/shrine-crawl#mesh-switchboard",
      "routeUrl": "https://pointcast.xyz/mesh",
      "nextShrineId": "agent-reading",
      "nextShrineUrl": "https://pointcast.xyz/shrine-crawl#agent-reading"
    },
    {
      "id": "agent-reading",
      "number": 12,
      "title": "Agent Reading Room Shrine",
      "subtitle": "A little desk for agents that prefer the manifest clean.",
      "background": "https://pointcast.xyz/images/shrines/system-shrine-bg.png",
      "accent": "#5e6ad2",
      "glow": "#d7dcff",
      "route": "/for-agents",
      "routeLabel": "Open agent notes",
      "bell": {
        "label": "Manifest bell",
        "noun": 200,
        "mode": "drone",
        "notes": [
          "F2",
          "C4",
          "G4"
        ]
      },
      "task": "Ring the manifest and check whether the shrine can explain itself.",
      "midjourney": "PointCast URL shrine background, agent reading-room shrine with tidy manifests, cards, and a single bell terminal, frosted acrylic, paper slips, dark walnut, legible, calm, machine-friendly, cozy web altar, tiny brass bell, hand-built ritual objects, soft practical lighting, crisp foreground details, atmospheric depth, no readable text, no watermark, no logo --ar 16:9 --stylize 320 --chaos 14 --weird 90 --seed 2412",
      "url": "https://pointcast.xyz/shrine-crawl#agent-reading",
      "routeUrl": "https://pointcast.xyz/for-agents",
      "nextShrineId": "garden-greenhouse",
      "nextShrineUrl": "https://pointcast.xyz/shrine-crawl#garden-greenhouse"
    },
    {
      "id": "garden-greenhouse",
      "number": 13,
      "title": "Garden Yield Greenhouse Shrine",
      "subtitle": "A greenhouse bell that counts sprouts instead of minutes.",
      "background": "https://pointcast.xyz/images/shrines/element-nature-shrine-bg.png",
      "accent": "#58a64f",
      "glow": "#d8f7b4",
      "route": "/garden-yield",
      "routeLabel": "Visit garden yield",
      "bell": {
        "label": "Sprout bell",
        "noun": 219,
        "mode": "single",
        "notes": [
          "G4",
          "D5"
        ]
      },
      "task": "Ring the sprout bell and name the tiny return this shrine should produce.",
      "midjourney": "PointCast URL shrine background, small greenhouse shrine with seedlings, yield tally charms, and a hanging bell, green glass, terracotta, copper tags, productive, tender, morning light, cozy web altar, tiny brass bell, hand-built ritual objects, soft practical lighting, crisp foreground details, atmospheric depth, no readable text, no watermark, no logo --ar 16:9 --stylize 320 --chaos 14 --weird 90 --seed 2413",
      "url": "https://pointcast.xyz/shrine-crawl#garden-greenhouse",
      "routeUrl": "https://pointcast.xyz/garden-yield",
      "nextShrineId": "houseplant-sink",
      "nextShrineUrl": "https://pointcast.xyz/shrine-crawl#houseplant-sink"
    },
    {
      "id": "houseplant-sink",
      "number": 14,
      "title": "Houseplant Sink Shrine",
      "subtitle": "A domestic shrine where the bell sounds like fresh water.",
      "background": "https://pointcast.xyz/images/shrines/element-nature-shrine-bg.png",
      "accent": "#1f8c7d",
      "glow": "#bdf7ec",
      "route": "/houseplants",
      "routeLabel": "Water houseplants",
      "bell": {
        "label": "Water bell",
        "noun": 238,
        "mode": "chord",
        "notes": [
          "A4",
          "E5",
          "B5"
        ]
      },
      "task": "Ring the water chord and pick the plant that gets a route of its own.",
      "midjourney": "PointCast URL shrine background, kitchen-sink houseplant shrine with watering can, bell, and plant cuttings, ceramic tile, green glass, damp terracotta, domestic, generous, sunlit, cozy web altar, tiny brass bell, hand-built ritual objects, soft practical lighting, crisp foreground details, atmospheric depth, no readable text, no watermark, no logo --ar 16:9 --stylize 320 --chaos 14 --weird 90 --seed 2414",
      "url": "https://pointcast.xyz/shrine-crawl#houseplant-sink",
      "routeUrl": "https://pointcast.xyz/houseplants",
      "nextShrineId": "meditation-tide",
      "nextShrineUrl": "https://pointcast.xyz/shrine-crawl#meditation-tide"
    },
    {
      "id": "meditation-tide",
      "number": 15,
      "title": "Meditation Tide Room Shrine",
      "subtitle": "A low room where the next click arrives with the tide.",
      "background": "https://pointcast.xyz/images/shrines/room-shrine-bg.png",
      "accent": "#2f7f9d",
      "glow": "#bfeaff",
      "route": "/meditate",
      "routeLabel": "Sit a minute",
      "bell": {
        "label": "Tide bell",
        "noun": 257,
        "mode": "cascade",
        "notes": [
          "B3",
          "D4",
          "G4"
        ]
      },
      "task": "Ring the tide and wait one breath before visiting the next shrine.",
      "midjourney": "PointCast URL shrine background, low meditation tide-room shrine with cushions, shells, and a bell near water reflections, linen cushion, sea glass, pale wood, quiet, tidal, spacious, cozy web altar, tiny brass bell, hand-built ritual objects, soft practical lighting, crisp foreground details, atmospheric depth, no readable text, no watermark, no logo --ar 16:9 --stylize 320 --chaos 14 --weird 90 --seed 2415",
      "url": "https://pointcast.xyz/shrine-crawl#meditation-tide",
      "routeUrl": "https://pointcast.xyz/meditate",
      "nextShrineId": "local-map",
      "nextShrineUrl": "https://pointcast.xyz/shrine-crawl#local-map"
    },
    {
      "id": "local-map",
      "number": 16,
      "title": "Local Map Shrine",
      "subtitle": "A neighborhood altar with pins, string, and one reliable bell.",
      "background": "https://pointcast.xyz/images/shrines/campaign-shrine-bg.png",
      "accent": "#c45a35",
      "glow": "#ffd0b4",
      "route": "/local",
      "routeLabel": "Open local map",
      "bell": {
        "label": "Map bell",
        "noun": 276,
        "mode": "drone",
        "notes": [
          "C3",
          "G3",
          "E4"
        ]
      },
      "task": "Ring the map bell and choose a local route that needs a landmark.",
      "midjourney": "PointCast URL shrine background, neighborhood map shrine with route pins, string lines, and a brass desk bell, folded paper map, cork, enamel pins, civic, warm, handmade, cozy web altar, tiny brass bell, hand-built ritual objects, soft practical lighting, crisp foreground details, atmospheric depth, no readable text, no watermark, no logo --ar 16:9 --stylize 320 --chaos 14 --weird 90 --seed 2416",
      "url": "https://pointcast.xyz/shrine-crawl#local-map",
      "routeUrl": "https://pointcast.xyz/local",
      "nextShrineId": "battle-trophy",
      "nextShrineUrl": "https://pointcast.xyz/shrine-crawl#battle-trophy"
    },
    {
      "id": "battle-trophy",
      "number": 17,
      "title": "Battle Trophy Niche",
      "subtitle": "A bright little victory case that rings before the match.",
      "background": "https://pointcast.xyz/images/shrines/block-shrine-bg.png",
      "accent": "#cf3e52",
      "glow": "#ffc5cd",
      "route": "/battle",
      "routeLabel": "Enter battle",
      "bell": {
        "label": "Trophy bell",
        "noun": 295,
        "mode": "single",
        "notes": [
          "D5",
          "A5"
        ]
      },
      "task": "Ring the trophy and give the next contest a house rule.",
      "midjourney": "PointCast URL shrine background, tiny battle trophy shrine with pennants, tokens, and a bell on a plinth, brushed steel, red felt, enamel badges, competitive, celebratory, arcade-lit, cozy web altar, tiny brass bell, hand-built ritual objects, soft practical lighting, crisp foreground details, atmospheric depth, no readable text, no watermark, no logo --ar 16:9 --stylize 320 --chaos 14 --weird 90 --seed 2417",
      "url": "https://pointcast.xyz/shrine-crawl#battle-trophy",
      "routeUrl": "https://pointcast.xyz/battle",
      "nextShrineId": "timeline-clock",
      "nextShrineUrl": "https://pointcast.xyz/shrine-crawl#timeline-clock"
    },
    {
      "id": "timeline-clock",
      "number": 18,
      "title": "Timeline Clock Shrine",
      "subtitle": "A shrine that makes time feel clickable.",
      "background": "https://pointcast.xyz/images/shrines/element-balance-shrine-bg.png",
      "accent": "#7a5cff",
      "glow": "#ded4ff",
      "route": "/timeline",
      "routeLabel": "Open timeline",
      "bell": {
        "label": "Clock bell",
        "noun": 314,
        "mode": "chord",
        "notes": [
          "E4",
          "G4",
          "C5"
        ]
      },
      "task": "Ring the clock chord and mark which moment should become a doorway.",
      "midjourney": "PointCast URL shrine background, timeline clock shrine with small bells at different hours and route tokens, brass gears, vellum strips, blue enamel, temporal, precise, quietly theatrical, cozy web altar, tiny brass bell, hand-built ritual objects, soft practical lighting, crisp foreground details, atmospheric depth, no readable text, no watermark, no logo --ar 16:9 --stylize 320 --chaos 14 --weird 90 --seed 2418",
      "url": "https://pointcast.xyz/shrine-crawl#timeline-clock",
      "routeUrl": "https://pointcast.xyz/timeline",
      "nextShrineId": "mood-kettle",
      "nextShrineUrl": "https://pointcast.xyz/shrine-crawl#mood-kettle"
    },
    {
      "id": "mood-kettle",
      "number": 19,
      "title": "Mood Kettle Shrine",
      "subtitle": "A kettle that whistles in whatever color the room becomes.",
      "background": "https://pointcast.xyz/images/shrines/room-shrine-bg.png",
      "accent": "#b45f9f",
      "glow": "#ffd4f4",
      "route": "/moods",
      "routeLabel": "Open moods",
      "bell": {
        "label": "Kettle bell",
        "noun": 333,
        "mode": "cascade",
        "notes": [
          "F4",
          "A4",
          "D5"
        ]
      },
      "task": "Ring the kettle cascade and pick today's mood offering.",
      "midjourney": "PointCast URL shrine background, mood kettle shrine with colored steam, cups, bells, and soft room lighting, porcelain, lacquer tray, silk color swatches, expressive, cozy, gently surreal, cozy web altar, tiny brass bell, hand-built ritual objects, soft practical lighting, crisp foreground details, atmospheric depth, no readable text, no watermark, no logo --ar 16:9 --stylize 320 --chaos 14 --weird 90 --seed 2419",
      "url": "https://pointcast.xyz/shrine-crawl#mood-kettle",
      "routeUrl": "https://pointcast.xyz/moods",
      "nextShrineId": "builder-bench",
      "nextShrineUrl": "https://pointcast.xyz/shrine-crawl#builder-bench"
    },
    {
      "id": "builder-bench",
      "number": 20,
      "title": "Shrine Builder Bench",
      "subtitle": "A practical altar with blanks ready for the next URL.",
      "background": "https://pointcast.xyz/images/shrines/shrine-background-sheet.png",
      "accent": "#2d6fbd",
      "glow": "#c7e0ff",
      "route": "/unfurls#builder",
      "routeLabel": "Open builder",
      "bell": {
        "label": "Template bell",
        "noun": 352,
        "mode": "drone",
        "notes": [
          "G2",
          "D4",
          "B4"
        ]
      },
      "task": "Ring the builder bell and copy one prompt into the next visual pass.",
      "midjourney": "PointCast URL shrine background, workbench shrine for building URL unfurls with blank cards, tools, and a bell, drafting tape, cutting mat, brass ruler, useful, creative, production-ready, cozy web altar, tiny brass bell, hand-built ritual objects, soft practical lighting, crisp foreground details, atmospheric depth, no readable text, no watermark, no logo --ar 16:9 --stylize 320 --chaos 14 --weird 90 --seed 2420",
      "url": "https://pointcast.xyz/shrine-crawl#builder-bench",
      "routeUrl": "https://pointcast.xyz/unfurls#builder",
      "nextShrineId": "cola-vending-altar",
      "nextShrineUrl": "https://pointcast.xyz/shrine-crawl#cola-vending-altar"
    },
    {
      "id": "cola-vending-altar",
      "number": 21,
      "title": "Nouns Cola Vending Altar",
      "subtitle": "A second cola stop because the machine absolutely has opinions.",
      "background": "https://pointcast.xyz/images/shrines/element-fire-shrine-bg.png",
      "accent": "#df2f3f",
      "glow": "#ffc6af",
      "route": "/nouns-cola",
      "routeLabel": "Restock cola",
      "bell": {
        "label": "Vending bell",
        "noun": 371,
        "mode": "single",
        "notes": [
          "A4",
          "E5"
        ]
      },
      "task": "Ring the vending bell and invent one impossible can flavor.",
      "midjourney": "PointCast URL shrine background, Nouns Cola vending altar with glowing cans, coin slot, and tiny bell, painted metal, red glass, fizz mist, funny, collectible, vending-machine sacred, cozy web altar, tiny brass bell, hand-built ritual objects, soft practical lighting, crisp foreground details, atmospheric depth, no readable text, no watermark, no logo --ar 16:9 --stylize 320 --chaos 14 --weird 90 --seed 2421",
      "url": "https://pointcast.xyz/shrine-crawl#cola-vending-altar",
      "routeUrl": "https://pointcast.xyz/nouns-cola",
      "nextShrineId": "sprint-compass",
      "nextShrineUrl": "https://pointcast.xyz/shrine-crawl#sprint-compass"
    },
    {
      "id": "sprint-compass",
      "number": 22,
      "title": "Sprint Compass Shrine",
      "subtitle": "The board points north only after the bell gets rung.",
      "background": "https://pointcast.xyz/images/shrines/system-shrine-bg.png",
      "accent": "#119b8e",
      "glow": "#baf4e9",
      "route": "/next-sprint",
      "routeLabel": "Open next sprint",
      "bell": {
        "label": "Compass bell",
        "noun": 390,
        "mode": "chord",
        "notes": [
          "B3",
          "F4",
          "B4"
        ]
      },
      "task": "Ring the compass chord and confirm the sprint still says keep going.",
      "midjourney": "PointCast URL shrine background, sprint compass shrine with route dials, task slips, and a bell pointer, teal enamel, brass compass, clipboard paper, focused, kinetic, build-ready, cozy web altar, tiny brass bell, hand-built ritual objects, soft practical lighting, crisp foreground details, atmospheric depth, no readable text, no watermark, no logo --ar 16:9 --stylize 320 --chaos 14 --weird 90 --seed 2422",
      "url": "https://pointcast.xyz/shrine-crawl#sprint-compass",
      "routeUrl": "https://pointcast.xyz/next-sprint",
      "nextShrineId": "archive-chapel",
      "nextShrineUrl": "https://pointcast.xyz/shrine-crawl#archive-chapel"
    },
    {
      "id": "archive-chapel",
      "number": 23,
      "title": "Sprints Archive Chapel",
      "subtitle": "A quiet chapel for finished pushes and not-yet-built dares.",
      "background": "https://pointcast.xyz/images/shrines/element-stone-shrine-bg.png",
      "accent": "#9b6b42",
      "glow": "#ead8c1",
      "route": "/sprints",
      "routeLabel": "Open sprints",
      "bell": {
        "label": "Archive bell",
        "noun": 409,
        "mode": "cascade",
        "notes": [
          "C4",
          "E4",
          "A4"
        ]
      },
      "task": "Ring the archive and decide which old sprint gets a return visit.",
      "midjourney": "PointCast URL shrine background, small archive chapel shrine for past sprints with bound ledgers and bell chain, sandstone, linen bookcloth, bronze tabs, reflective, orderly, historic, cozy web altar, tiny brass bell, hand-built ritual objects, soft practical lighting, crisp foreground details, atmospheric depth, no readable text, no watermark, no logo --ar 16:9 --stylize 320 --chaos 14 --weird 90 --seed 2423",
      "url": "https://pointcast.xyz/shrine-crawl#archive-chapel",
      "routeUrl": "https://pointcast.xyz/sprints",
      "nextShrineId": "keep-going-rooftop",
      "nextShrineUrl": "https://pointcast.xyz/shrine-crawl#keep-going-rooftop"
    },
    {
      "id": "keep-going-rooftop",
      "number": 24,
      "title": "Keep Going Rooftop Shrine",
      "subtitle": "The last shrine is not an ending. It is a roof with a louder bell.",
      "background": "https://pointcast.xyz/images/shrines/campaign-shrine-bg.png",
      "accent": "#f2c84b",
      "glow": "#fff2a8",
      "route": "/lobby/gate-five",
      "routeLabel": "Visit gate five",
      "bell": {
        "label": "Rooftop bell",
        "noun": 428,
        "mode": "drone",
        "notes": [
          "D3",
          "A3",
          "D5"
        ]
      },
      "task": "Ring the final drone, then either loop back or open the Keep Going Machine.",
      "midjourney": "PointCast URL shrine background, rooftop keep-going shrine with city lights, ladder rails, and a large brass bell, tar paper, painted steel, yellow signal flags, triumphant, breezy, open-ended, cozy web altar, tiny brass bell, hand-built ritual objects, soft practical lighting, crisp foreground details, atmospheric depth, no readable text, no watermark, no logo --ar 16:9 --stylize 320 --chaos 14 --weird 90 --seed 2424",
      "url": "https://pointcast.xyz/shrine-crawl#keep-going-rooftop",
      "routeUrl": "https://pointcast.xyz/lobby/gate-five",
      "nextShrineId": "lobby-brass-door",
      "nextShrineUrl": "https://pointcast.xyz/shrine-crawl#lobby-brass-door"
    }
  ],
  "caveats": [
    "Completion, visited, and rung state are local browser state only.",
    "Route links remain ordinary PointCast links and do not require crawl completion.",
    "Midjourney prompts are prompt recipes for the next background generation pass; this endpoint does not claim the images have already been generated.",
    "Bell sounds reuse PointCast shared chime helpers and are triggered only from user gestures."
  ]
}