Melatone Skin Clinic Book on Treatwell

Developers & AI agents

Melatone Skin Clinic Developer & Agent Resources

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.

No booking or payment API. This is a clinician-led medical clinic. Appointments are booked through the Treatwell widget and questions go to WhatsApp. The API surface is intentionally read-only.

Machine-readable index

llms.txtCite-safe content & usage policy · /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

REST API

Base URL: https://www.melatoneskinclinic.co.uk. All endpoints are GET, return application/json, allow CORS from any origin, and require no authentication.

Endpoints

Method & pathReturns
GET /apiJSON directory of the API.
GET /api/v1/treatmentsThe 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/clinicClinic identity: name, address, opening hours, contact channels, booking link.
GET /api/healthLiveness check.
GET /{path}Any published page as HTML, or as Markdown with Accept: text/markdown.

Example

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"
}

Versioning & deprecation

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.

Rate limits

Responses advertise the standard RFC RateLimit headers so agents can self-throttle:

HeaderMeaning
RateLimit-LimitRequests allowed per window (120).
RateLimit-RemainingRequests left in the current window.
RateLimit-ResetSeconds until the window resets.
RateLimit-Policy120;w=60 (120 requests per 60 seconds).
Retry-AfterPresent on a 429; seconds to wait before retrying.

Error model

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"
}
codestatuswhen
treatment_not_found404Unknown ?slug=.
category_not_found404Unknown ?category=.
method_not_allowed405Any method other than GET/OPTIONS.
rate_limited429Rate limit exceeded; see Retry-After.

MCP server

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.

curl -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).

Markdown content negotiation

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

CLI

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.

Usage & attribution

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.