mondello.dev · agent-era surface atlas
Agents on mondello.dev
Every way an agent, LLM, or agent-curious developer can consume
this blog. Use Claude Code? Start with the MCP server. Prefer
plain HTTP? The JSON APIs below are self-describing. Want the
whole site in one call? /archive.md.
Every surface documented here is covered by an end-to-end test
in pnpm verify against production. The numbers in
/stats come from
the same shared libraries as the MCP tools — zero drift.
Model Context Protocol
-
MCP server (Streamable HTTP)
/api/mcpClaude Code + any MCP-aware client installs mondello.dev as a live tool source. JSON-RPC 2.0 over POST. Tools below.
claude mcp add mondello https://www.mondello.dev/api/mcp -
search_cues
/api/mcp (tools/call)Audio-timestamped full-text search across every narrated post. Each hit carries a deep-link that auto-seeks the AudioPlayer.
curl -sX POST https://www.mondello.dev/api/mcp -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_cues","arguments":{"query":"x402","limit":5}}}' -
list_posts · get_post_markdown · get_post_outline
/api/mcpWalk the corpus (list_posts), fetch bodies as Markdown (get_post_markdown), or see structure first (get_post_outline) to decide what to pull.
-
find_similar_posts
/api/mcptf-idf + cosine similarity over full post bodies. Smarter than tag overlap.
-
get_cue_at_time
/api/mcpTimestamp → spoken text. Closes the audio-addressability loop (text → timestamp via search_cues; timestamp → text here).
-
get_site_stats · get_latest · get_changelog · get_archive
/api/mcpOne-shot observability: whole-site shape, freshness pulse, filtered ship log, or the entire blog as a single Markdown doc.
-
get_random_quote · get_featured_cue · search_all
/api/mcpQuote-of-the-day picker (random or seeded), one post's most-quotable cue, and unified post+cue+tag search. Five surfaces (REST, OG card, MCP, Schema.org, visible pull quote) all share one pickFeaturedCue() scorer.
-
list_skills · get_skill_preview
/api/mcpBrowse + preview the x402 skills marketplace through MCP. list_skills returns the catalog with currency=USDC + network=eip155:8453 so x402-aware agents can budget the buy in one round-trip; get_skill_preview returns the explicit free-preview block (full body stays behind the 402 at /skills/<slug>/raw).
curl -sX POST https://www.mondello.dev/api/mcp -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_skills","arguments":{}}}'
JSON APIs
-
Search cues across narrations
/api/search/cues.json?q=QUERYSame data as MCP search_cues. deepLinkUrl in every hit.
curl "https://www.mondello.dev/api/search/cues.json?q=x402&limit=5" | jq '.hits[0]' -
Cue at timestamp
/api/posts/<slug>/cue-at.json?t=SECONDSGiven a slug + audio seconds, returns the cue being spoken, plus prev + next for context.
-
Similar posts (tf-idf)
/api/similar/<slug>.jsonSemantic neighbors with cosine scores and shared salient terms.
-
Post outline
/posts/<slug>.outline.jsonFlat heading tree with audio startSeconds per section. Cheap discovery step.
-
Random narrated cue
/api/random-cue.jsonSerendipity endpoint. Cache-Control: no-store so every call rolls fresh.
-
Quote wall + random quote
/api/quotes.json · /api/quotes/random.jsonEvery narrated post's featured cue in one payload (sorted by score), plus a single-pick endpoint for 'quote of the day' surfaces. Browseable HTML at /quotes. MCP tool: get_random_quote.
curl -s https://www.mondello.dev/api/quotes/random.json | jq .quote -
Site stats + Latest pulse + Changelog
/stats.json · /api/latest.json · /api/changelog.jsonThree composite freshness views. Shared buildSiteStats() + changelog module → zero drift between surfaces.
Content exports
-
Full archive (one Markdown file)
/archive.mdEvery post concatenated with per-post YAML frontmatter + `---` separators. ~47KB, newest first.
curl -s https://www.mondello.dev/archive.md | claude -p "summarize this blog" -
Per-post: HTML · Markdown · ANSI · VTT · BibTeX
/posts/<slug>(.md | .ansi | .vtt | .bib)One PortableText source, five serializers. ANSI for terminal reading; VTT for synced transcripts; .bib for Zotero / Mendeley.
curl -s https://www.mondello.dev/posts/eight-plugins-one-session.ansi | less -R
Syndication feeds
-
RSS · Atom · JSON Feed · Podcast
/rss.xml · /atom.xml · /feed.json · /podcast.xmlAll four site-wide feeds with full post bodies + audio enclosures. Podcast feed ships Podcasting 2.0 extensions (chapters, transcripts, license, funding, person).
-
Per-tag feeds
/tag/<slug>/rss.xml · /tag/<slug>/atom.xml · /tag/<slug>/feed.jsonTopic-filtered syndication. Enumerated in /feeds.opml.
-
Changelog RSS
/changelog.xml145+ entries of shipping history. Permalinks land on the right anchor on the HTML page.
-
OPML subscription bundle
/feeds.opmlOne-click bulk import into Feedly / Inoreader / NetNewsWire / Pocket Casts / Podverse.
x402 paid surfaces
-
Gated endpoints (5)
/api/export/posts · /llms-full.txt · /skills/<slug>/raw · …Return HTTP 402 + x402 v2 accepts block. Payment via EIP-712 TransferWithAuthorization on Base USDC. See /stats for live prices.
Discovery
-
llms.txt · OpenAPI · sitemap.xml · robots.txt
/llms.txt · /openapi.json · /sitemap.xml · /robots.txtEvery agent-facing URL enumerated. robots.txt explicitly allows 16 known AI bots.
-
Schema.org + microformats2
Post pagesBlogPosting + PodcastEpisode + AudioObject + SpeakableSpecification + Person JSON-LD; h-entry + h-card microformats2 for IndieWeb readers.