How do I make my media archive accessible inside AI agents?
For Media archive owners and content publishers · Based on Rachel Lee's Agentic Web Publishing Framework
// TL;DR
If you run a media archive — video library, podcast catalog, article collection, or cultural database — Rachel Lee's Agentic Web Publishing Framework lets you make your content browsable inside AI agent harnesses like Claude Desktop without forcing users to visit your website. Map your archive's navigation (browse, search, view episode, read transcript) to MCP tools, build MCP Apps that replicate your site's visual experience inside the agent, and add Web MCP to your pages for in-browser agent access. Your archive reaches audiences inside the tools they already use daily.
Why should a media archive care about AI agents?
Your audience is increasingly using AI agents as their primary interface for discovering and consuming content. If someone asks Claude about a topic your archive covers, your content should surface — not as a URL the user must click, but as a browsable, readable experience inside the agent itself. Rachel Lee's framework calls this Meet Them Where They Are: agents are the new 'wherever,' and the web's job is to reach people there.
Media archives are particularly well-suited for this framework because they have rich, structured content (episodes, articles, categories, transcripts) and clear navigation patterns that map directly to MCP tools.
How do I map my archive's content to MCP tools?
Audit your archive's navigation. Most media sites have a consistent pattern:
- Browse: list episodes, articles, or items by category, date, or tag
- Search: find content by keyword, topic, or contributor
- View detail: read a transcript, view an episode page, see metadata
- Paginate: move through large result sets
Each becomes an MCP tool:
- `list_episodes` — returns JSON with titles, dates, descriptions, and slugs
- `search_by_topic` — takes a query, returns matching content with snippets
- `get_transcript` — returns the full transcript as Markdown (ideal for text-rich content)
- `get_page` — returns an interactive MCP App replicating the episode or article page
Host your MCP server with HTTP transport at `/mcp`. Users paste one URL into Claude Desktop settings. No config files, no command-line arguments.
How do I build MCP Apps that replicate my archive's experience?
This is where the framework shines for media content. An MCP App is a single self-contained HTML file (bundled with Vite or similar) that renders inline inside the agent harness. For a media archive, your MCP App for `get_page` can include:
- Your full visual design — colors, typography, layout — by bundling your existing CSS and serving fonts from your origin via CSP configuration
- Forward/backward navigation between episodes using `call_server_tool` to fetch the next or previous item
- A text-mode toggle that surfaces the transcript inline
- Audio playback using the Web Audio API (available inside the sandboxed iframe at zero inference cost)
- Read-aloud functionality via the Web Speech API — no external TTS service needed
Remember the constraints: MCP Apps have no local storage and no direct network access. Every data fetch goes through `call_server_tool`. External links use the host-permission API. Configure CSP to allow your own domain's resources. Embed images as base64 or serve them from your origin.
For navigation tools that the MCP App calls internally (like `get_next_episode`), set visibility: app so the model does not attempt to narrate the JSON response.
How do I support in-browser agents visiting my archive?
Add Web MCP registration to your archive's HTML pages. On an episode page, register tools like:
- `play_episode` — calls your existing playback function
- `get_transcript` — returns the transcript text
- `browse_related` — navigates to related content
Use the imperative model with `navigator.modelContext.registerTool()` and wrap it in a feature check. In-browser agents can then interact with your archive semantically rather than attempting to parse your DOM or guess at button locations from screenshots.
For archives with search forms, the declarative model works too: add `tool-name="search_archive"` and `tool-description="Search the archive by keyword"` attributes to your search form element.
What is my next step?
Pick your three most-accessed content types — probably list, search, and detail view. Implement them as MCP tools with HTTP transport this week. Build one MCP App for your detail page using your existing design system. Install the server in Claude Desktop and browse your own archive from inside the agent. The experience of seeing your content rendered beautifully inside an AI agent, fully navigable, is the moment the framework clicks.
// FREQUENTLY ASKED QUESTIONS
Can I use Web Speech API to add read-aloud to my MCP App without any external service?
Yes. The Web Speech API is available inside MCP App sandboxed iframes and provides text-to-speech at zero inference cost and zero external dependency. This is an example of Rachel Lee's Infinite Canvas principle — leveraging browser primitives for rich experiences rather than reaching for external services. Quality varies by browser engine, but it works reliably for reading transcripts and article text.
How do I handle images from external CDNs in my MCP App?
Add the external CDN's domain to your server's Content Security Policy (CSP) configuration. Without explicit CSP allowance, images from other domains are blocked silently — no error, just missing images. Alternatively, proxy images through your own server or embed them as base64 data URIs in the MCP App bundle for maximum reliability.
Can users navigate between archive items inside the MCP App?
Yes. Use call_server_tool inside your MCP App to fetch the next or previous item's data from your MCP server. The app re-renders with the new content without leaving the agent harness. Set visibility: app on these navigation tools so the model does not try to narrate the JSON response. This replicates the browse-forward experience of your website entirely within the agent.