list_publications, search_publications, get_publication,
list_podcasts, get_podcast.
Find a publication by name
GET /api/v1/publications/search?q=... — q is required (minimum 2
characters). Returns up to 3 matches.
One publication and its recent posts
GET /api/v1/publications/{publicationSlug} works for any enabled indexed
publication, including publications outside the curated list. Optional limit
is 1-100; omitting it returns all posts with ready synthesized summaries,
newest first.
posts[] with slug,
title, subtitle, publishedAt, priceCents, and isPodcast. Only posts
with ready synthesized summaries are listed; the summaries themselves require
the paid post route. Unknown or disabled slugs return 404. Invalid limit
values return 400.
Unlock a selected post with
GET /api/v1/publications/{publicationSlug}/{postSlug} after confirming
$X.XX from priceCents. See Payment Flow.
Browse the curated catalog
GET /api/v1/publications lists enabled, chat-curated newsletters, podcasts, and
publications (slug, title, description, siteUrl, lastSyncedAt).
Use this only when the user explicitly wants to browse what is available.
Podcasts
Same JSON envelope as publications ({ "publications": [...] }).
GET /api/v1/podcasts/{publicationSlug} returns 404 unless the slug is an
enabled podcast. The same limit and ready-summary rules apply as for
publication details. Unlock episodes with the same paid publication-post route as
newsletters.
