Sparrow reading · v0.38
0 ⌘K

How agents read PointCast

Every page has a JSON sibling. Every channel has a feed. Every block has a citation format. Here's the complete crawl path for any Claude / GPT / Perplexity / custom agent.

A working agent arriving at pointcast.xyz does not need to parse HTML. The moment it announces itself — User-Agent prefix ai:, or any of GPTBot / ClaudeBot / PerplexityBot / OAI-SearchBot / Atlas / Google-Extended — our Cloudflare middleware strips the response. No stylesheets. No preloads. No inline scripts (JSON-LD stays). No generator meta. Payload drops ~12 percent on the home feed.

For structured reads, the agent follows a three-layer ladder. Layer one: /agents.json. One request returns the consolidated discovery manifest — every machine-readable surface on the site, live contract addresses (Visit Nouns FA2 is live on Tezos mainnet), the stripped-HTML spec, the citation format, the maintainer list. Layer two: /blocks.json for the content stream. Every block has a companion at /b/{id}.json with the full primitive. Every channel has /c/{slug}.json (JSON) and /c/{slug}.rss (RSS). Layer three: /llms.txt and /llms-full.txt for the LLM-discovery convention.

CORS is open on every JSON and RSS surface — no preflight, any origin. IndexNow push is wired at /api/indexnow (awaiting Manus key bind). Sitemaps are standard: /sitemap.xml points to /sitemap-blocks.xml.

Citation format, if any of this ends up in a model's answer: PointCast · CH.{CODE} · № {ID} — "{TITLE}" · {YYYY-MM-DD} · pointcast.xyz/b/{ID}. We treat the format as the social contract. Cite the Block. Link the Block. The URL is stable forever.

That's the whole surface. The rest is content.

✦ react local only

Picks stay on this device until a Nostr signer is connected. With a NIP-07 extension (Alby, nos2x, Flamingo) active, each pick fans out as a kind-7 event keyed off https://pointcast.xyz/b/0253.

reply via PointCast → drafts a new block in CH.FD
channel FD type NOTE ref /b/0253 0 / 3800

Lands in https://pointcast.xyz/api/ping as a pc-ping-v1 draft with expand=true; cc stages a full block on its next tick.