{"language":"en","name":"Dermalytics MCP","version":"1.0.0","description":"Model Context Protocol (MCP) server for cosmetic ingredient lookup and product INCI analysis. It exposes the same public data surfaces as the Dermalytics REST API.","documentationUrl":"https://dermalytics.dev/docs","serverUrl":"https://api.dermalytics.dev/mcp","docsEndpoint":"https://api.dermalytics.dev/v1/mcp/docs","authentication":{"type":"bearer","headerName":"Authorization","description":"Send your Dermalytics API key as Authorization: Bearer <API_KEY>.","getApiKeyUrl":"https://dermalytics.dev/dashboard"},"transport":{"type":"Streamable HTTP","endpoint":"https://api.dermalytics.dev/mcp","notes":"Stateless HTTP transport optimized for Vercel serverless deployments."},"tools":[{"name":"get_ingredient","description":"Look up one cosmetic ingredient by INCI-style name or known synonym. Returns the same fields as GET /v1/ingredients/{name}.","inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Ingredient name or synonym, for example \"niacinamide\"."}},"required":["name"]},"creditsPerCall":1,"mapsToApi":"GET /v1/ingredients/{name}"},{"name":"analyze_product","description":"Analyze a full product ingredient list. Returns the same fields as POST /v1/analyze.","inputSchema":{"type":"object","properties":{"ingredients":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Array of ingredient names from a product INCI list."}},"required":["ingredients"]},"creditsPerCall":"1 per matched ingredient","mapsToApi":"POST /v1/analyze with body { ingredients: string[] }"}],"responseFields":{"severity":"safe | low_risk | moderate_risk | high_risk.","safety_status":"Overall formulation severity for analyze_product.","found":"Whether an analyze_product row matched an ingredient in the Dermalytics database.","description":"Ingredient description when available.","comedogenicity":"Integer 0-5 when available.","irritancy":"Integer 0-5 when available.","formula":"Chemical formula when available.","molecular_weight":"Molecular weight when available.","cas_no":"CAS Registry Number when available.","ec_no":"European Community number when available.","ph_eur_name":"Ph. Eur. name when available.","functions":"Cosmetic function list.","category":"Primary ingredient category when available.","synonyms":"Known alternate names returned by get_ingredient.","credits_remaining":"API credits remaining after a successful charged call."},"errorResponses":{"400":"Validation error.","401":"Missing or invalid Bearer API key.","402":"Insufficient credits.","404":"Ingredient not found.","500":"Internal server error."},"integration":{"cursor":{"configPath":".cursor/mcp.json","example":{"mcpServers":{"dermalytics":{"url":"https://api.dermalytics.dev/mcp","headers":{"Authorization":"Bearer YOUR_API_KEY"}}}}},"claudeDesktop":{"configPath":"Claude Desktop config (varies by OS)","example":{"mcpServers":{"dermalytics":{"url":"https://api.dermalytics.dev/mcp","headers":{"Authorization":"Bearer YOUR_API_KEY"}}}}}},"apiEndpoints":[{"method":"GET","path":"/v1/ingredients/{name}","description":"Single ingredient lookup."},{"method":"POST","path":"/v1/analyze","description":"Product ingredient list analysis."}]}