# After the Institutions Media Room > Creator-centered content index and media room for Gil Roberts. Structured API for AI agents, show producers, press, and event organizers. Articles, podcasts, streams, video, and timeline in one index. Supports L402 (Bitcoin Lightning) for premium access. This is a creator media room powered by Paranor. Content is indexed from Substack and other RSS feeds, reviewed by the creator, and published to a public Media Room and a machine-readable Agent API. The Agent API returns structured JSON for all content types. ## API (for agents) - [Agent API Index](https://api.paranor.app/api/agent): Discovery endpoint — version, changelogUrl, docsUrl, all endpoints, L402 status, capabilities array. Use HEAD or GET as the recommended health check. Dedicated health: GET /api/agent/health returns 200 with version and status. Canonical docs and status URLs: https://docs.paranor.app and https://status.paranor.app. - [Discovery Bundle](https://api.paranor.app/api/agent/discovery-bundle): Single-call bootstrap — links, version, capabilities (mcp.v1, webhooks.v1, digest.v1, sandbox.v1, l402.v1 when enabled), indexUpdatedAt. Use discovery-bundle indexUpdatedAt to skip content-index when unchanged (health and freshness check). - [Negotiate](https://api.paranor.app/api/agent/negotiate): POST with { capabilities: ["mcp.v1","sandbox.v1"] } for best-fit integration guidance. - [Full API spec](https://api.paranor.app/agent): Human-readable API documentation and endpoint reference. Use-case flows (auto-curation and booking, automated PR/booking, media coordination) are documented there. - [Agent Card (A2A)](https://api.paranor.app/.well-known/agent-card.json): Agent2Agent Protocol — skills, capabilities, auth - [MCP Server](https://api.paranor.app/api/mcp): Model Context Protocol — tool definitions for LLM runtimes; GET /api/mcp/call returns 405 (use POST for tool execution). Tools: get_profile, get_content_index, get_booking, get_media_kit, get_speaking, get_articles, get_article, get_timeline_entries, get_episodes, get_stream_videos, generate_guest_kit - [Changelog](https://api.paranor.app/api/agent/changelog): Machine-readable changelog (version, entries with date, summary, changes). Changelog webhook (changelog.updated) is available via webhook-subscribe. Scheduled digest delivery (content_index.digest) with digestSchedule + digestWindow; payload shape: { event, digest, count, items: [{ id, title, url, date }], deliveredAt } (see agent-api). - [Creator Profile](https://api.paranor.app/api/agent/profile): Name, bio, topics, content index URL, stats, links - [Unified Content Index](https://api.paranor.app/api/agent/content-index): All content (articles, episodes, streams, video, timeline) in one list; supports ?type=, ?tag=/?topic= (theme/keyword filter), ?digest=7d|30d, ?count=true for lightweight checks; conditional GET (ETag/304); sandbox (?sandbox=1 or X-Paranor-Sandbox: true) available for agent testing. When items or count is 0, the response may include emptyReason (index_empty, filter, l402_required, per_surface_visibility); see agent-api "Common scenarios" and emptyReason so you can branch without guessing. - [Content Index Bundle](https://api.paranor.app/api/agent/content-index/bundle): NDJSON batch stream alias for content-index bundle retrieval (supports same filters; equivalent to format=ndjson) - [Agent Discovery Widget (meta-only)](https://api.paranor.app/api/agent/widget): Copyable link-tag + JSON-LD snippets for embedding llms.txt/API discovery on external websites - [Booking Info](https://api.paranor.app/api/agent/booking): Topics, sample questions (sampleQuestions), links.bookingRequest for POST; combine with content-index (?tag=/?topic=) and POST /api/agent/booking-request for auto-curation, PR/booking, and media coordination assistant flows - [Show Prep](https://api.paranor.app/api/agent/show-prep?showUrl=https://example.com/show&topic=bitcoin): Deterministic briefing pack (top Dots, suggested angles, interview questions, booking-request template) - [Transcribe](https://api.paranor.app/api/agent/transcribe): POST sourceUrl to request transcript markdown/text (L402-gated when enabled) - [Media Kit](https://api.paranor.app/api/agent/media-kit): Approved copy, blurbs, stats for press - [Media Kit (PDF)](https://api.paranor.app/api/agent/media-kit?format=pdf): One-click PDF download - [Speaking Profile](https://api.paranor.app/api/agent/speaking): Bio, topics, past talks for event organizers - [Speaker One-Sheet (PDF)](https://api.paranor.app/api/agent/speaking?format=pdf): One-click PDF download - [Dots List](https://api.paranor.app/api/agent/articles): All Dots with metadata - [Timeline Entries](https://api.paranor.app/api/agent/timeline-entries): Event appearances - [Episodes](https://api.paranor.app/api/agent/episodes): Podcast/RSS episodes - [Streams & Video](https://api.paranor.app/api/agent/stream-videos): Stream and video entries - [Webhook Subscribe](https://api.paranor.app/api/agent/webhook-subscribe): POST callbackUrl + events to register for dot.approved, content.published, guest_kit.generated, changelog.updated, content_index.digest; creator approves in Paranor - [Booking Request](https://api.paranor.app/api/agent/booking-request): POST to submit a booking request; creator sees in Paranor Intelligence - [Register Agent Tier](https://api.paranor.app/api/agent/register-agent-tier): POST with name, purpose, whyNoPayment for free slice (count + first N items); when L402 enabled, 402 responses may include tiers (pay_or_work: use work-offer → work-submit for task-for-access). - [Work Offer](https://api.paranor.app/api/agent/work-offer): POST with resourceId to receive a Pay-or-Work micro-task (label_classify, summarize, match, micro_survey); then POST result to work-submit to get accessToken. - [Work Submit](https://api.paranor.app/api/agent/work-submit): POST taskId and submission after completing work-offer task; returns accessToken for Authorization: L402 . - [Nexus Creator Registry](https://api.paranor.app/api/nexus/creators): Multi-creator discovery; ?topic=, ?tag=, ?keyword=; ?sort=updatedDesc|nameAsc; ?expand=bookingHints (topics, oneLiner, bookingRequestUrl); returns opted-in creators with indexUrl, agentBaseUrl, mediaRoomUrl - [Nexus Feed](https://api.paranor.app/api/nexus/feed): Lightweight feed for agent polling (?limit=, ?cursor=) - Rate limiting: guest-kit, MCP call, L402 payment-request may return 429; use Retry-After and exponential backoff with jitter. API index may include rateLimitPerMinute or quotaRemaining when rate limiting is enforced (PPB 79). - AGENTS.md: If /agents.md is slow or unreachable, use this llms.txt or the API index (GET /api/agent) as the authoritative source for discovery; both contain the same endpoint list and discovery links. Retry with exponential backoff (2s, 4s); cache llms.txt and API index up to 1h. ## POST endpoints (machine-parseable, PPB 175) Format: METHOD URL | required | optional POST https://api.paranor.app/api/agent/webhook-subscribe | callbackUrl,events | digestSchedule,digestWindow POST https://api.paranor.app/api/agent/booking-request | showName | showUrl,timeframe,message,source POST https://api.paranor.app/api/agent/register-agent-tier | (none required) | name,purpose,whyNoPayment POST https://api.paranor.app/api/agent/work-offer | resourceId | paymentContextToken,articleId POST https://api.paranor.app/api/agent/work-submit | taskId,submission | (none) ## Quick payload examples (PPB 160) **profile** (GET): `{ "name","publication","description","oneLiner","topics","contentIndexUrl","stats":{ "totalApiCalls30d" },"links":{ "mediaRoom","agentIndex" } }` **content-index** (GET ?count=true): `{ "count":0,"items":[],"emptyReason":"index_empty","publication","authorName","contentIndexUrl" }` **booking-request** (POST): `{"showName":"My Podcast","source":"agent"}` — minimal; add showUrl, timeframe, message optional **webhook-subscribe** (POST): `{"callbackUrl":"https://example.com/webhook","events":["dot.approved"]}` — add digestSchedule, digestWindow for content_index.digest ## Webhook payload quick shapes `dot.approved`: `{ "event":"dot.approved","articleId","title","url","approvedAt" }` `content_index.digest`: `{ "event":"content_index.digest","digest":"7d"|"30d","count", "items":[{"id","title","url","date"}],"deliveredAt" }` Full schemas: agent-api, OpenAPI /components/schemas ## Safe test access Use `?sandbox=1` or `X-Paranor-Sandbox: true` on profile, booking, media-kit, speaking, content-index for deterministic mock data (no L402, no live data). `?apikey=` is **not supported**; sandbox is the approved low-friction test mode. ## Human Pages - [Media Room](https://api.paranor.app/media): Public content library with summaries, tags, and guest kit; when search or tag filter is active, a Clear filters control is shown for predictable UX. For content-index empty-state clarification (why count can be 0), see agent-api and the emptyReason field. - [Agent View](https://api.paranor.app/agent): Human-readable API index with links to all endpoints - [Nexus](https://api.paranor.app/nexus): Multi-creator discovery directory (search by topic, tag, keyword) - [About Paranor](https://api.paranor.app/learn): What the platform does and how to try the demo - [Learn — For AI agents](https://api.paranor.app/learn/for-agents): FAQs and high-level guidance for agents; pipeline (Dot → Contexter → Index → Cataloger → Nexus). For instruction-book style docs and full FAQs, see project docs AI_AGENT_INSTRUCTION_BOOK. - [Learn — Workers](https://api.paranor.app/learn/workers): Pay-for-Work task pool; OpenClaw skill (paranor-task-pool) and UmbrelOS compute workers; earn sats, incentives, setup. Task API: GET /api/tasks/available, POST /api/tasks/claim, POST /api/tasks/submit. - [Landing payload](https://api.paranor.app/api/landing-payload): Machine-readable hero, CTAs, discovery links (llms.txt, agent, api/agent, docs, status) - [Product waitlist](https://api.paranor.app/product): Landing page + creator waitlist signup - [API Documentation](https://api.paranor.app/agent): Endpoint reference and response shapes - [Docs Hub](https://docs.paranor.app): Canonical product/docs landing page - [Status Page](https://status.paranor.app): Canonical operational status page - Canonical docs and status: /docs and /status on main host (fallback when subdomains return 404); see API index fallbackDocsUrl and fallbackStatusUrl. ## Optional - [Terms of Service](https://api.paranor.app/terms): Terms and privacy policy