Skip to main content
Use these routes when the user names a newsletter, author, podcast, or URL, or asks what publications are available. Do not load the full catalog for a topic question — use Topic Search instead. Free, no auth. MCP: 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.
The response includes publication metadata plus 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.