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 →
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.