D Fetcher

changelog

What's changed, newest first. Back to the calculator →

2026-05-30

  • MCP Registry listing. Published as com.dfetcher/vitamin-d. Listed at registry.modelcontextprotocol.io; DNS-verified namespace; GitHub Actions auto-republishes on version bumps.
  • /llms.txt. One-screen Markdown summary written for LLM ingestion — what the site does, the model in a paragraph, what it isn't, and where the API / MCP endpoints live.
  • Security headers. HSTS, X-Frame-Options, Content-Security-Policy, and a tight Permissions-Policy added via Cloudflare Pages' _headers file.
  • Real 404 page. Previously, requests for unknown paths fell back to the calculator with a 200 status (bad for crawlers). Now a proper 404 page returns 404.
  • Privacy page. Spells out that nothing typed into the site leaves the browser to D Fetcher's servers, what the upstream calls send, and how to clear local data. Read it →
  • AI-crawler robots rules. Explicitly allows GPTBot, ClaudeBot, Claude-Web, PerplexityBot, Google-Extended, CCBot, and Applebot-Extended.

2026-05-28

  • Geocoder fix. Canadian, UK, and Dutch postal codes were 404'ing against zippopotam.us because we sent the full postcode but the service only stores the outward portion (FSA / sector). Now we look up the outward and preserve the user's typed code in the label. Bare outward codes (SW1A, M5V) also resolve directly.
  • MCP server. D Fetcher now speaks the Model Context Protocol at /mcp. Add https://dfetcher.com/mcp to Claude Desktop / Claude Code / any MCP client and the calculate, geocode, and describe_skin_types tools light up.
  • FAQ. Plain-English answers to the ten questions people actually ask about the model: accuracy, cloud handling, glass / sunscreen / shade, the 20° elevation cutoff, what counts as medical advice. Search-engine-friendly (FAQPage schema). Read the FAQ →
  • Structured data. JSON-LD added to every page (WebApplication, TechArticle, FAQPage, WebPage + breadcrumbs) so Google / Bing / AI assistants can surface the calculator with richer context.
  • API docs page. Endpoint, parameters, response shape, errors, and caching documented at /api, with a one-click copy for the URL. Footer-linked from every page.
  • JSON API. /api/calculate?lat=…&lon=… returns the same data the page computes — sun position, UV index, IU/min, minutes to target, MED, peak window, and full day + year curves. Same model, no scraping. CORS-open, 60s edge cache.
  • Shared model. The math moved to lib/dfetcher.js so the page and the API can't drift. Page now loads as an ES module.
  • Hour-by-hour chart. Today's "minutes to target" plotted across the day, anchored on live UV forecast where available and clear-sky elsewhere. Sun-below-horizon, low-sun, and synthesis-viable bands are shaded distinctly so the curve's shape is readable at a glance.
  • Global postal codes. Canadian, UK, Dutch, Japanese, and Brazilian postal formats now route directly to zippopotam.us. Other countries can be resolved with a code, CC suffix (e.g. 10115, DE). City-name search worldwide is unchanged.
  • Header refresh. Sun mark added next to the D Fetcher wordmark, with a one-line intro about what the tool is for.
  • Social card. Open Graph + Twitter card image (og.png, 1200×630) for previews on Twitter/X, LinkedIn, Facebook, iMessage, Slack.
  • Changelog page. You're reading it. Linked from the footer; included in sitemap.xml.