{
  "mcp": {
    "name": "adrianlansdown-com-mcp",
    "title": "Adrian Lansdown Website MCP",
    "version": "1.0.0"
  },
  "protocolVersions": [
    "2025-06-18",
    "2025-03-26",
    "2024-11-05"
  ],
  "transport": "streamable-http",
  "endpoint": "https://adrianlansdown.com/mcp",
  "instructions": "Read-only MCP server for adrianlansdown.com. Use these tools and resources to search and read blog posts, notes, movie & post reviews, parkrun 5k results & stats, podcast listens & stats, AI coding usage stats (Claude Code, Codex & OpenCode), recipes, shared links, /now snapshots, static pages, tags, the unified activity feed, and weighted random pages (Wander).",
  "site": {
    "title": "Adrian Lansdown . com",
    "description": "Adrian Lansdown's personal site",
    "url": "https://adrianlansdown.com",
    "author": {
      "name": "Adrian Lansdown",
      "email": "adrian@adrianlansdown.com"
    },
    "mcpEndpoint": "https://adrianlansdown.com/mcp",
    "feeds": {
      "all": "https://adrianlansdown.com/feed.xml",
      "posts": "https://adrianlansdown.com/posts/feed.xml",
      "notes": "https://adrianlansdown.com/notes/feed.xml",
      "reviews": "https://adrianlansdown.com/reviews/feed.xml",
      "recipes": "https://adrianlansdown.com/recipes/feed.xml",
      "links": "https://adrianlansdown.com/links/feed.xml"
    },
    "endpoints": {
      "parkrunJson": "https://adrianlansdown.com/parkrun/results.json",
      "parkrunCsv": "https://adrianlansdown.com/parkrun/results.csv",
      "parkrunNdjson": "https://adrianlansdown.com/parkrun/results.ndjson",
      "wanderManifest": "https://adrianlansdown.com/wander.json"
    },
    "counts": {
      "posts": 20,
      "notes": 349,
      "reviews": 452,
      "movieReviews": 452,
      "recipes": 2,
      "links": 1,
      "nowSnapshots": 1,
      "pages": 14,
      "tags": 95,
      "parkrunRuns": 233,
      "podcastEpisodes": 2348,
      "uniquePodcasts": 48,
      "aiUsageMonths": 11,
      "wanderPoolSize": 824
    }
  },
  "tools": [
    {
      "name": "get_site_info",
      "title": "Get Site Info & Counts",
      "description": "Return site metadata (title, author, URL), RSS feed URLs, machine-readable endpoints, and total counts for all public collections on adrianlansdown.com."
    },
    {
      "name": "search_site",
      "title": "Search Site Content",
      "description": "Full-text search across all public content on adrianlansdown.com (blog posts, notes, movie reviews, recipes, shared links, /now snapshots, and static pages)."
    },
    {
      "name": "get_content",
      "title": "Get Content by URL or Slug",
      "description": "Fetch the full Markdown content and structured metadata for any post, note, movie review, recipe, shared link, /now snapshot, or static page by its URL path, full URL, or slug."
    },
    {
      "name": "list_posts",
      "title": "List Blog Posts",
      "description": "List and filter blog posts from adrianlansdown.com, newest first."
    },
    {
      "name": "list_notes",
      "title": "List Notes",
      "description": "List and filter short-form notes (including Mastodon-synced notes) from adrianlansdown.com, newest first."
    },
    {
      "name": "list_reviews",
      "title": "List Movie & Post Reviews",
      "description": "Query Letterboxd movie reviews and blog post reviews, along with overall rating statistics and distribution."
    },
    {
      "name": "get_parkrun",
      "title": "Get Parkrun Results & Stats",
      "description": "Get Adrian's parkrun 5k statistics (best/worst/mean time, position, age grade, annual bests, 3/6/12-month trends, milestones, and per-event breakdown) and filterable run results."
    },
    {
      "name": "get_podcasts",
      "title": "Get Podcast Listens & Stats",
      "description": "Get Adrian's Overcast podcast listening stats (top podcasts all-time & recent, monthly/yearly totals, weekly streaks, newly discovered shows, day-of-week distribution) and filterable episode plays."
    },
    {
      "name": "get_ai_usage",
      "title": "Get AI Coding Usage Stats",
      "description": "Get Adrian's monthly AI coding usage stats (tokens and API-equivalent dollar cost from ccusage across Claude Code, Codex and OpenCode, per-model breakdown, new models per month, and month-over-month deltas)."
    },
    {
      "name": "list_recipes",
      "title": "List Recipes",
      "description": "List and search recipes published on adrianlansdown.com, including ingredients, timings, servings, and instructions."
    },
    {
      "name": "list_links",
      "title": "List Shared Links",
      "description": "List and search links saved/shared on adrianlansdown.com along with Adrian's commentary."
    },
    {
      "name": "get_now",
      "title": "Get /Now Page & Archive",
      "description": "Get the current /now/ snapshot of what Adrian is focused on, plus all archived /now snapshots (or a specific snapshot by date)."
    },
    {
      "name": "list_pages",
      "title": "List Static Pages",
      "description": "List static pages on adrianlansdown.com (About, Contact, Referrals, Subscribe) and their full content."
    },
    {
      "name": "list_tags",
      "title": "List Tags & Tagged Content",
      "description": "List all content tags with their item counts and URLs, or pass `tag` to retrieve all posts, notes, recipes, and links with that tag."
    },
    {
      "name": "get_activity",
      "title": "Get Unified Activity Feed",
      "description": "Get the chronological activity stream across blog posts, notes, links, recipes, reviews, recent podcast listens, and recent parkrun runs."
    },
    {
      "name": "wander_random",
      "title": "Wander (Random Page)",
      "description": "Draw a weighted random page from the site's Wander pool (posts, notes, movie reviews, recipes, links) using the site's WANDER_WEIGHTS distribution, and return its full content."
    }
  ],
  "resources": [
    {
      "uri": "site://info",
      "name": "Site Info & Counts",
      "description": "Metadata, feeds, endpoints, and content counts for adrianlansdown.com."
    },
    {
      "uri": "site://now",
      "name": "Current /Now Snapshot & Archive",
      "description": "Current /now/ page content and historical /now snapshots."
    },
    {
      "uri": "site://activity",
      "name": "Recent Site Activity Feed",
      "description": "Latest 50 items from the unified activity feed across all content types."
    },
    {
      "uri": "site://posts",
      "name": "Blog Posts Index",
      "description": "All blog posts with titles, dates, tags, summaries, and URLs."
    },
    {
      "uri": "site://notes",
      "name": "Recent Notes",
      "description": "Latest 50 short-form notes with full content."
    },
    {
      "uri": "site://reviews",
      "name": "Movie & Post Reviews Summary",
      "description": "Review statistics, rating distribution, and latest 50 reviews."
    },
    {
      "uri": "site://parkrun",
      "name": "Parkrun Stats & Results",
      "description": "Complete parkrun 5k summary stats, annual bests, event breakdown, and recent runs."
    },
    {
      "uri": "site://podcasts",
      "name": "Podcast Listening Stats & Recent Plays",
      "description": "Overcast podcast listening stats, top shows, streaks, and recent episode listens."
    },
    {
      "uri": "site://ai-usage",
      "name": "AI Coding Usage Stats",
      "description": "Monthly Claude Code, Codex and OpenCode token and cost statistics from ccusage."
    },
    {
      "uri": "site://recipes",
      "name": "Recipes",
      "description": "All recipes with ingredients, timings, and full instructions."
    },
    {
      "uri": "site://links",
      "name": "Shared Links",
      "description": "All saved/shared links and commentary."
    },
    {
      "uri": "site://pages",
      "name": "Static Pages",
      "description": "Static pages (About, Contact, Referrals, Subscribe)."
    },
    {
      "uri": "site://tags",
      "name": "Tags Index",
      "description": "All tags across posts, notes, recipes, and links with counts."
    },
    {
      "uri": "site://wander",
      "name": "Wander Pool Manifest",
      "description": "All dated content URLs in the Wander pool and their draw weights."
    }
  ],
  "prompts": [
    {
      "name": "site-overview",
      "title": "Overview of Adrian Lansdown's Website",
      "description": "Summarize who Adrian Lansdown is, what he is currently up to (/now), and his recent writing and activity."
    },
    {
      "name": "running-progress",
      "title": "Analyze Parkrun 5k Progress",
      "description": "Analyze Adrian's parkrun 5k history, personal bests, trends, and milestone projections."
    },
    {
      "name": "ai-usage-trends",
      "title": "Analyze AI Coding Usage Trends",
      "description": "Analyze Adrian's Claude Code, Codex and OpenCode token and cost trends across completed months."
    }
  ]
}