Public content · Developer reference
Read the site as data.
Find an essay, follow its connections, or read the published collection. These resources are available without an account or API key.
Agent clients that speak the Model Context Protocol can use the read-only tools described in the public MCP guide instead.
Three ways to read
Each URL returns a complete snapshot. Choose the smallest resource that answers your question.
- GET /manifest.jsonJSON array
- Content catalog. Discover content by stable ID, canonical URL, kind, subject, and relationships. Includes limited descriptions of private tools; select access: public before following entries.
- GET /llms-full.txtUTF-8 text
- Published article text. Read the published essay collection in one text document, with canonical URLs and publication dates. Use a specific article URL when a task only needs that article.
- GET /feed.xmlRSS 2.0 XML
- Article feed. Read published essays through an RSS reader or XML parser. Items include canonical links, dates, descriptions, and article HTML.
Find first. Retrieve what you need.
Start with the catalog. Read a canonical page for a focused task; use the text collection when you need to compare essays.
Download the catalog
curl --fail --compressed 'https://caskeycoding.com/manifest.json'List public essay URLs · JavaScript
const origin = 'https://caskeycoding.com';
const response = await fetch(origin + '/manifest.json');
if (!response.ok) throw new Error('Catalog HTTP ' + response.status);
const entries = await response.json();
const essays = entries.filter(entry =>
entry.access === 'public' &&
entry.kind === 'essay' &&
entry.slug.startsWith('/') && !entry.slug.startsWith('//')
);
const urls = essays.map(entry => new URL(entry.slug, origin).href);
console.log(urls.slice(0, 5));Run this in a JavaScript environment with fetch, or on this site's origin. Cross-origin browser access depends on the response's CORS headers. The example selects local essays; external entries identify separate sites and need their own access checks.
A catalog of entries and their connections
The response is a JSON array. Order and entry count can change; use stable IDs instead of array positions.
id / slug- Use id to join entries and relations. slug is the canonical local path or external URL.
kind / fields / primary_field- Filter by content kind and subject. primary_field is the main subject; fields lists all subjects for public entries.
systems / relations- System membership and typed links use target entry IDs. Resolve targets in the catalog, then check their access before following them.
status / aliveness / dates- Describe the artifact and its catalog lifecycle. dates.since is not a last-modified timestamp; do not use it as a change feed.
access- Public entries have the full documented shape. Private tool descriptions omit fields, systems, dates, relations, and other details; skip them when retrieving content.
external / disclosure / plane_override- Optional destination metadata, educational-finance disclosure, and plot coordinates. The OpenAPI schema lists the complete fields and allowed values.
For the complete response contract and an example entry, read the OpenAPI specification.
Cache once. Reuse across tasks.
- These are anonymous, read-only snapshots generated when the site is built. There are no query filters or pagination; filter the catalog locally.
- Resolve local slugs against https://caskeycoding.com. Follow only entries with access: public; private entries are descriptions, not permission to access a tool. Treat external URLs as separate destinations.
- Reuse downloaded responses across tasks. Honor Cache-Control and use conditional requests with ETag or Last-Modified when those headers are present. Keep the cached body when a conditional request returns 304.
- For scheduled collection, start with one check per day and adjust to your needs and the response cache directives. Back off after errors and honor Retry-After when present. This is client guidance, not an update schedule or service guarantee.
- Fetch a selected canonical page for a focused question. Download the full-text collection only when the task needs multiple essays, and cache it for reuse.
Keep clients tolerant of new fields and enum values. Read the current schema when updating an integration; no fixed publication cadence is promised.