{"serverId":"mcp-registry/com.dfetcher/vitamin-d","tools":[{"name":"calculate","fixed":{"name":"calculate","description":"Calculate vitamin D synthesis at a given location and time. Returns sun position, UV index, IU/min, minutes to reach the target dose, MED (sunburn threshold), the peak window, and optional 15-min day / monthly year curves. UV index uses a live satellite-driven forecast where available, with a clear-sky fallback.","inputSchema":{"type":"object","required":["lat","lon"],"properties":{"age":{"type":"integer","default":45,"maximum":120,"minimum":1,"description":"Age in years (used for the age factor)."},"day":{"type":"boolean","default":true,"description":"Include 15-min samples through the local day."},"lat":{"type":"number","maximum":90,"minimum":-90,"description":"Latitude in degrees."},"lon":{"type":"number","maximum":180,"minimum":-180,"description":"Longitude in degrees."},"area":{"type":"number","default":0.25,"maximum":1,"minimum":0,"description":"Exposed body fraction. 0.10 face+hands, 0.25 arms+face, 0.40 t-shirt+shorts, 0.85 near-full body."},"date":{"type":"string","description":"ISO 8601 timestamp or epoch ms. Defaults to now."},"skin":{"type":"integer","default":3,"maximum":6,"minimum":1,"description":"Fitzpatrick skin type 1–6. Use describe_skin_types if unknown."},"year":{"type":"boolean","default":true,"description":"Include monthly solar-noon samples with cloud climatology."},"scalp":{"enum":["hair","bald"],"type":"string","default":"hair","description":"Scalp coverage. \"bald\" adds ~3.5% BSA."},"target":{"type":"integer","default":1000,"maximum":50000,"minimum":100,"description":"Daily vitamin D target in IU."}}},"annotations":{"readOnlyHint":true},"title":"Vitamin D synthesis calculator"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":442,"tokensAfter":442},{"name":"describe_skin_types","fixed":{"name":"describe_skin_types","description":"Returns the six Fitzpatrick skin types with sun-reactivity behavior and descriptive ancestry hints. Call this when the user's skin type is unknown so you can pick the closest match before calling calculate.","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true},"title":"Fitzpatrick skin type reference"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":84,"tokensAfter":84},{"name":"geocode","fixed":{"name":"geocode","description":"Turn a place name, postal code, or \"code, CC\" string into { lat, lon, label }. Auto-detects US/CA/GB/NL/JP/BR postal patterns; ambiguous digit-only codes default to US unless the caller appends a country code (e.g. \"10115, DE\"). Falls back to Open-Meteo place-name search for everything else.","inputSchema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","minLength":1,"description":"City name, postal code, or \"CODE, CC\" (e.g. \"75001, FR\")."}}},"annotations":{"readOnlyHint":true},"title":"Resolve a place to lat/lon"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":144,"tokensAfter":144}],"toolsChanged":3,"tokensSaved":0,"todo":[],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}