Book on Treatwell
Developers & AI agents
Melatone Skin Clinic publishes a small, public, read-only API and an MCP server so AI agents and developers can read the treatment catalogue, clinic details, and any published page as structured data. Everything here is free, needs no key, and is safe to cite with attribution.
/llms.txt
OpenAPI 3.1 specFull API description · /openapi.json
agents.jsonAgent discovery index · /.well-known/agents.json
api-catalogRFC 9727 link set · /.well-known/api-catalog
MCP manifestMCP server descriptor · /.well-known/mcp.json
HealthLiveness JSON · /api/health
SitemapEvery published page · /sitemap.xml
robots.txtCrawler & AI-training policy · /robots.txt
Base URL: https://www.melatoneskinclinic.co.uk. All endpoints are GET, return application/json, allow CORS from any origin, and require no authentication.
| Method & path | Returns |
|---|---|
GET /api | JSON directory of the API. |
GET /api/v1/treatments | The full treatment catalogue as a JSON list. Filter with ?category=. |
GET /api/v1/treatments/{slug} | One treatment by slug (e.g. /api/v1/treatments/microneedling). Unknown slug returns a problem+json 404. |
GET /api/v1/clinic | Clinic identity: name, address, opening hours, contact channels, booking link. |
GET /api/health | Liveness check. |
GET /{path} | Any published page as HTML, or as Markdown with Accept: text/markdown. |
curl -s https://www.melatoneskinclinic.co.uk/api/v1/treatments?slug=laser-hair-removal
{
"object": "treatment",
"version": "2026-08-21",
"slug": "laser-hair-removal",
"name": "Laser hair removal",
"category": "laser",
"summary": "Triple-wavelength diode laser (755/808/1064 nm)...",
"deliveredBy": "Catia Zaki (VTCT Level 4 Laser & IPL)",
"url": "https://www.melatoneskinclinic.co.uk/laser-hair-removal-london"
}
The API is versioned in the URL path (/api/v1/) and every response carries an X-API-Version header with the dated contract (e.g. 2026-08-21). Breaking changes ship under a new path prefix (/api/v2/). A version being retired is announced with the RFC 8594 Deprecation and Sunset response headers at least six months before it is removed, and every response carries a Link: </api-versioning-policy>; rel="deprecation" header pointing at the full policy. Read it here: API Versioning & Deprecation Policy.
Responses advertise the standard RFC RateLimit headers so agents can self-throttle:
| Header | Meaning |
|---|---|
RateLimit-Limit | Requests allowed per window (120). |
RateLimit-Remaining | Requests left in the current window. |
RateLimit-Reset | Seconds until the window resets. |
RateLimit-Policy | 120;w=60 (120 requests per 60 seconds). |
Retry-After | Present on a 429; seconds to wait before retrying. |
Errors follow RFC 9457 (application/problem+json) with a machine-readable code:
HTTP/1.1 404 Not Found
Content-Type: application/problem+json
{
"type": "https://www.melatoneskinclinic.co.uk/developers#error-treatment_not_found",
"title": "Not Found",
"status": 404,
"code": "treatment_not_found",
"detail": "No treatment exists with slug \"xyz\". List available slugs at /api/v1/treatments.",
"instance": "/api/v1/treatments?slug=xyz"
}
| code | status | when |
|---|---|---|
treatment_not_found | 404 | Unknown ?slug=. |
category_not_found | 404 | Unknown ?category=. |
method_not_allowed | 405 | Any method other than GET/OPTIONS. |
rate_limited | 429 | Rate limit exceeded; see Retry-After. |
Melatone runs a Model Context Protocol server over the Streamable HTTP transport, so Claude, ChatGPT and other agents can call the clinic natively. It is stateless and needs no authentication.
https://www.melatoneskinclinic.co.uk/api/mcp (POST, JSON-RPC 2.0)list_treatments, get_treatment, get_clinic_info, get_page_markdowncurl -s https://www.melatoneskinclinic.co.uk/api/mcp \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize",
"params":{"protocolVersion":"2025-06-18","capabilities":{},
"clientInfo":{"name":"curl","version":"1.0"}}}'
Add it to a client that supports remote MCP servers by pointing it at the endpoint URL above (transport: Streamable HTTP).
Any published page returns clean Markdown when you send Accept: text/markdown for clean, citable output. The response carries Content-Type: text/markdown and an X-Markdown-Tokens estimate.
curl -s -H 'Accept: text/markdown' https://www.melatoneskinclinic.co.uk/skin-of-colour
A zero-dependency Node CLI wraps the API for quick scripting. It runs on Node 18+ with no install step:
curl -s https://www.melatoneskinclinic.co.uk/cli/melatone.mjs -o melatone.mjs
node melatone.mjs treatments # list the catalogue
node melatone.mjs treatment microneedling # one treatment
node melatone.mjs clinic # clinic info
node melatone.mjs page /skin-of-colour # any page as Markdown
A packaged release on npm is planned; until then the script above is the canonical CLI.
Content may be cited with attribution to Melatone Skin Clinic. Commercial model-training use is not permitted without written consent. See llms.txt for the full policy and agents.json for when to reach for the clinic. Questions: hello@melatoneskinclinic.co.uk.