Checks weight loss clinics and online pharmacies against the UK regulator registers (CQC, GPhC).
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Body mass index from weight and height, with the NHS adult category and the healthy-weight range for that height. UK thresholds; note the NHS lowers them for some ethnic backgrounds. General information, not a diagnosis.
Height in cm (120-230)
Body weight in kg (30-350)
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http on-the-register https://ontheregister.co.uk/api/mcp
Body mass index from weight and height, with the NHS adult category and the healthy-weight range for that height. UK thresholds; note the NHS lowers them for some ethnic backgrounds. General information, not a diagnosis.
| Argument | Type | Description |
|---|---|---|
| height_cm* | number | Height in cm (120-230) |
| weight_kg* | number | Body weight in kg (30-350) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"weight_kg",
"height_cm"
],
"properties": {
"height_cm": {
"type": "number",
"description": "Height in cm (120-230)",
"exclusiveMinimum": 0
},
"weight_kg": {
"type": "number",
"description": "Body weight in kg (30-350)",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}Convert between a dose (mg or mcg), syringe units and mL at a known strength. Give the strength as conc_mg_ml, or as vial_mg + water_ml. Set direction to dose_to_units or units_to_dose. Returns the counterpart plus concentration and mcg per unit. Arithmetic only.
| Argument | Type | Description |
|---|---|---|
| dose | any | Required when direction is dose_to_units |
| units | any | Required when direction is units_to_dose |
| syringe | string | |
| vial_mg | any | |
| water_ml | any | |
| direction | string | |
| dose_unit | string | |
| conc_mg_ml | number | Known strength; or give vial_mg + water_ml instead |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"dose": {
"$ref": "#/properties/conc_mg_ml",
"description": "Required when direction is dose_to_units"
},
"units": {
"$ref": "#/properties/conc_mg_ml",
"description": "Required when direction is units_to_dose"
},
"syringe": {
"enum": [
"u100-0.3",
"u100-0.5",
"u100-1.0",
"u40-1.0"
],
"type": "string",
"default": "u100-0.5"
},
"vial_mg": {
"$ref": "#/properties/conc_mg_ml"
},
"water_ml": {
"$ref": "#/properties/conc_mg_ml"
},
"direction": {
"enum": [
"dose_to_units",
"units_to_dose"
],
"type": "string",
"default": "dose_to_units"
},
"dose_unit": {
"enum": [
"mg",
"mcg"
],
"type": "string",
"default": "mcg"
},
"conc_mg_ml": {
"type": "number",
"description": "Known strength; or give vial_mg + water_ml instead",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}Work out the units to draw for a prescribed dose from a powder vial and bacteriostatic water. Inputs: vial mg, water mL, the dose (mg or mcg), and the syringe. Returns units, mL, the nearest syringe line and doses per vial. Arithmetic only — the user's own dose, no presets.
| Argument | Type | Description |
|---|---|---|
| dose* | number | The prescribed dose, in the unit given by dose_unit |
| syringe | string | |
| vial_mg* | number | Powder in the vial, in mg |
| water_ml* | number | Bacteriostatic water added, in mL |
| dose_unit | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"vial_mg",
"water_ml",
"dose"
],
"properties": {
"dose": {
"type": "number",
"description": "The prescribed dose, in the unit given by dose_unit",
"exclusiveMinimum": 0
},
"syringe": {
"enum": [
"u100-0.3",
"u100-0.5",
"u100-1.0",
"u40-1.0"
],
"type": "string",
"default": "u100-0.5"
},
"vial_mg": {
"type": "number",
"description": "Powder in the vial, in mg",
"exclusiveMinimum": 0
},
"water_ml": {
"type": "number",
"description": "Bacteriostatic water added, in mL",
"exclusiveMinimum": 0
},
"dose_unit": {
"enum": [
"mg",
"mcg"
],
"type": "string",
"default": "mcg"
}
},
"additionalProperties": false
}Put two weight-loss/diabetes injections (Mounjaro, Wegovy, Ozempic, Saxenda) side by side on SmPC facts: doses, frequency, pen, licensing, NHS access, storage. Returns a row-by-row table with the rows that differ flagged. Facts only, never a 'which is right for you'.
| Argument | Type | Description |
|---|---|---|
| a* | string | |
| b* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"a",
"b"
],
"properties": {
"a": {
"enum": [
"mounjaro",
"wegovy",
"ozempic",
"saxenda"
],
"type": "string"
},
"b": {
"enum": [
"mounjaro",
"wegovy",
"ozempic",
"saxenda"
],
"type": "string"
}
},
"additionalProperties": false
}Get one compound's UK legal status: whether it is licensed, in trials, cosmetic or unlicensed, the evidence and risks, and the licensed alternative. Returns sources and dates. No dosing is included, by design.
| Argument | Type | Description |
|---|---|---|
| slug* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string"
}
},
"additionalProperties": false
}List the UK peptide/compound profiles with their UK legal status (licensed, in trials, cosmetic, or research/unlicensed). Filter by status or category. Returns name, aka, class, status and the licensed alternative. A legal-status index, not a dosing tool.
| Argument | Type | Description |
|---|---|---|
| status | string | |
| category | string | Category code, e.g. WL, Longevity, Repair |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"status": {
"enum": [
"licensed",
"trials",
"cosmetic",
"research"
],
"type": "string"
},
"category": {
"type": "string",
"description": "Category code, e.g. WL, Longevity, Repair"
}
},
"additionalProperties": false
}Daily energy use (BMR via Mifflin-St Jeor, then TDEE for activity) and two safe calorie-deficit targets for weight loss, clamped to the NHS lower limits. Needs age and sex for the equation. General information, not a diet plan.
| Argument | Type | Description |
|---|---|---|
| age* | integer | Age in years (18-100) |
| sex* | string | Biological sex, for the metabolic equation |
| activity | string | |
| height_cm* | number | Height in cm (120-230) |
| weight_kg* | number | Body weight in kg (30-350) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"weight_kg",
"height_cm",
"age",
"sex"
],
"properties": {
"age": {
"type": "integer",
"description": "Age in years (18-100)"
},
"sex": {
"enum": [
"female",
"male"
],
"type": "string",
"description": "Biological sex, for the metabolic equation"
},
"activity": {
"enum": [
"sedentary",
"light",
"moderate",
"very",
"extra"
],
"type": "string"
},
"height_cm": {
"type": "number",
"description": "Height in cm (120-230)",
"exclusiveMinimum": 0
},
"weight_kg": {
"type": "number",
"description": "Body weight in kg (30-350)",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}Rough daily fluid estimate from body weight (about 30-35 ml/kg), framed against the NHS 6-to-8-glasses guidance. Needs rise in heat, with exercise, and with GLP-1 sickness. A general estimate, not a medical fluid target.
| Argument | Type | Description |
|---|---|---|
| weight_kg* | number | Body weight in kg (30-350) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"weight_kg"
],
"properties": {
"weight_kg": {
"type": "number",
"description": "Body weight in kg (30-350)",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}Browse On the Register's plain-English UK guides to weight-loss medicines and the providers who supply them: checking a provider, cost and NHS access, using a pen, and side effects and treatment. Filter by category. Returns each guide's title, summary and page URL to link as further reading.
| Argument | Type | Description |
|---|---|---|
| category | string | checking (providers), cost (price and NHS access), pen (storage and use), or treatment (side effects, switching) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"category": {
"enum": [
"checking",
"cost",
"pen",
"treatment"
],
"type": "string",
"description": "checking (providers), cost (price and NHS access), pen (storage and use), or treatment (side effects, switching)"
}
},
"additionalProperties": false
}Estimate when a GLP-1/GIP injection is essentially cleared after the last dose, from the SmPC half-life (about five half-lives). Give the drug and the last-dose date. Returns the clear date and whether the basis is the SmPC or an estimate. Informational.
| Argument | Type | Description |
|---|---|---|
| drug* | string | |
| last_dose* | string | Date of the last dose, YYYY-MM-DD |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"drug",
"last_dose"
],
"properties": {
"drug": {
"enum": [
"mounjaro",
"wegovy",
"ozempic",
"saxenda"
],
"type": "string"
},
"last_dose": {
"type": "string",
"description": "Date of the last dose, YYYY-MM-DD"
}
},
"additionalProperties": false
}Give the SmPC milestones for when a GLP-1/GIP injection starts working: when appetite drops, when the first full dose is, and how the effect builds. Returns dated-by-week milestones with their citation. Informational, no prediction for any one person.
| Argument | Type | Description |
|---|---|---|
| drug* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"drug"
],
"properties": {
"drug": {
"enum": [
"mounjaro",
"wegovy",
"ozempic",
"saxenda"
],
"type": "string"
}
},
"additionalProperties": false
}Lay out the change days for an HRT estradiol patch from the day the first patch goes on, and rotate the application site. Products: estradot, evorel, evorel_conti, estraderm_mx (twice weekly); femseven, femseven_conti, progynova_ts (weekly). Optional weeks to show (default 8). SmPC change interval, not dosing advice.
| Argument | Type | Description |
|---|---|---|
| weeks | integer | How many weeks to lay out, default 8 |
| product* | string | |
| start_date* | string | The day the first patch goes on, YYYY-MM-DD |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"product",
"start_date"
],
"properties": {
"weeks": {
"type": "integer",
"maximum": 26,
"minimum": 1,
"description": "How many weeks to lay out, default 8"
},
"product": {
"enum": [
"estradot",
"evorel",
"evorel_conti",
"estraderm_mx",
"femseven",
"femseven_conti",
"progynova_ts"
],
"type": "string"
},
"start_date": {
"type": "string",
"description": "The day the first patch goes on, YYYY-MM-DD"
}
},
"additionalProperties": false
}Give the step-by-step injection walkthrough for a GLP-1 pen (Mounjaro KwikPen, Wegovy, Ozempic or Saxenda), from the maker's UK instructions. Returns the ordered steps and the symptom list you can troubleshoot. Routes to the leaflet; not a substitute for it.
| Argument | Type | Description |
|---|---|---|
| pen* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"pen"
],
"properties": {
"pen": {
"enum": [
"mounjaro",
"wegovy",
"ozempic",
"saxenda"
],
"type": "string"
}
},
"additionalProperties": false
}Answer a GLP-1 pen problem (won't dial, no clicks, stuck, not at zero, no drop at the needle, a bubble, a leak, cold, unsure) for a given pen, from the maker's UK leaflet. Returns what it means and what to do, with when to stop and call the pharmacist.
| Argument | Type | Description |
|---|---|---|
| pen* | string | |
| symptom* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"pen",
"symptom"
],
"properties": {
"pen": {
"enum": [
"mounjaro",
"wegovy",
"ozempic",
"saxenda"
],
"type": "string"
},
"symptom": {
"enum": [
"wont-dial",
"no-clicks",
"stuck",
"not-zero",
"last-dose",
"no-drop",
"bubble",
"leak",
"unsure",
"cold"
],
"type": "string"
}
},
"additionalProperties": false
}Work out a daily protein target for someone losing weight on a GLP-1, from weight (and height, which sharpens it) and activity level. Returns grams per day with the band and which body-weight basis was used. General information, not personalised dietetic advice.
| Argument | Type | Description |
|---|---|---|
| activity | string | |
| height_cm | number | Height in cm (120-230); sharpens the target |
| weight_kg* | number | Body weight in kg (30-350) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"weight_kg"
],
"properties": {
"activity": {
"enum": [
"light",
"active",
"strength"
],
"type": "string"
},
"height_cm": {
"type": "number",
"description": "Height in cm (120-230); sharpens the target",
"exclusiveMinimum": 0
},
"weight_kg": {
"type": "number",
"description": "Body weight in kg (30-350)",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}Check a provider by name, website URL or postcode against our CQC/GPhC register data. Returns whether it is a registered, listable provider and its registration wording, with how it was resolved. If we don't hold it, returns the official register to search by hand. Never a guess.
| Argument | Type | Description |
|---|---|---|
| query* | string | A provider name, website URL, or postcode |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"minLength": 2,
"description": "A provider name, website URL, or postcode"
}
},
"additionalProperties": false
}Get one registered provider by its slug: its registration wording and rating, the treatments it offers, its locations, and its own published consultation fee where known. Returns null if the slug is not a listable provider. Registration facts only, no recommendation.
| Argument | Type | Description |
|---|---|---|
| slug* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string"
}
},
"additionalProperties": false
}Find UK providers that offer a treatment and are on the CQC/GPhC register. Filter by treatment (glp1-weight-loss, hormone-therapy, iv-therapy, vitamin-injections), kind (online/clinic/mobile), nation, town slug, a name search, or near a postcode. Sort by distance, CQC rating, Google rating or review count. Returns listings with registration wording, the Google rating and the provider's own consultation fee where published. Lists, never ranks by price or recommends.
| Argument | Type | Description |
|---|---|---|
| q | string | Text to match in the provider name |
| kind | string | |
| near | string | A UK postcode or outcode to search near; returns nearest first |
| sort | string | Order: distance (needs `near`), cqc_rating, google_rating, or reviews (Google count). Default: distance with `near`, else cqc_rating. |
| limit | integer | |
| nation | string | |
| radius_km | number | Search radius for `near`, in km |
| town_slug | string | |
| treatment* | string |
List the SmPC side effects of a GLP-1/GIP injection (Mounjaro, Wegovy, Ozempic, Saxenda) by frequency band, plus the serious warnings with what to do (999/111/prescriber) and the Yellow Card link. General leaflet information, not a prediction and not triage.
| Argument | Type | Description |
|---|---|---|
| drug* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"drug"
],
"properties": {
"drug": {
"enum": [
"mounjaro",
"wegovy",
"ozempic",
"saxenda"
],
"type": "string"
}
},
"additionalProperties": false
}Say whether a GLP-1 pen or a reconstituted peptide vial is still good, given the situation (unopened, in use in the fridge, or left out) and, if left out, how long and how warm. Returns a graded verdict with the SmPC in-use limit. No dosing.
| Argument | Type | Description |
|---|---|---|
| product* | string | |
| hours_out | number | Hours out of the fridge, for 'left-out' |
| situation* | string | |
| temp_band | string | How warm it got, for 'left-out' |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"product",
"situation"
],
"properties": {
"product": {
"enum": [
"mounjaro",
"wegovy",
"ozempic",
"saxenda",
"peptide"
],
"type": "string"
},
"hours_out": {
"type": "number",
"minimum": 0,
"description": "Hours out of the fridge, for 'left-out'"
},
"situation": {
"enum": [
"unopened",
"in-use-fridge",
"left-out"
],
"type": "string"
},
"temp_band": {
"enum": [
"fridge",
"room",
"warm",
"hot"
],
"type": "string",
"description": "How warm it got, for 'left-out'"
}
},
"additionalProperties": false
}Work out when an HRT or testosterone gel, spray or sachet pack runs out and when to reorder. Inputs: product (oestrogel, sandrena, lenzetto, testogel_pump, testogel_sachet, tostran), doses per day, optional containers, pack-opened date and reorder lead days. Returns doses left, days, run-out and order-by dates. Counts are estimates for metered packs.
| Argument | Type | Description |
|---|---|---|
| per_day* | number | Pumps, sprays or sachets used per day (the user's prescription) |
| product* | string | |
| lead_days | integer | Reorder lead time in days, default 7 |
| opened_on | string | Date the pack was first opened, YYYY-MM-DD; default today |
| containers | integer | Units in the pack (canisters, or sachets); default the product's pack size |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"product",
"per_day"
],
"properties": {
"per_day": {
"type": "number",
"description": "Pumps, sprays or sachets used per day (the user's prescription)",
"exclusiveMinimum": 0
},
"product": {
"enum": [
"oestrogel",
"sandrena",
"lenzetto",
"testogel_pump",
"testogel_sachet",
"tostran",
"testavan"
],
"type": "string"
},
"lead_days": {
"type": "integer",
"maximum": 60,
"minimum": 0,
"description": "Reorder lead time in days, default 7"
},
"opened_on": {
"type": "string",
"description": "Date the pack was first opened, YYYY-MM-DD; default today"
},
"containers": {
"type": "integer",
"maximum": 120,
"minimum": 1,
"description": "Units in the pack (canisters, or sachets); default the product's pack size"
}
},
"additionalProperties": false
}Waist-to-height ratio from waist and height, against the NICE bands (keep your waist under half your height). Flags central-fat risk that BMI can miss. For adults with BMI under 35. General information, not a diagnosis.
| Argument | Type | Description |
|---|---|---|
| waist_cm* | number | Waist measurement in cm (40-200), at the belly button |
| height_cm* | number | Height in cm (120-230) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"waist_cm",
"height_cm"
],
"properties": {
"waist_cm": {
"type": "number",
"description": "Waist measurement in cm (40-200), at the belly button",
"exclusiveMinimum": 0
},
"height_cm": {
"type": "number",
"description": "Height in cm (120-230)",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}Healthy-weight range for a given height, from the healthy BMI band (18.5-24.9), with the BMI-22 midpoint as a single figure. There is no one 'ideal weight'; this is the healthy range. General information.
| Argument | Type | Description |
|---|---|---|
| height_cm* | number | Height in cm (120-230) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"height_cm"
],
"properties": {
"height_cm": {
"type": "number",
"description": "Height in cm (120-230)",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 7, 2026.
No readOnlyHint / destructiveHint annotations, so clients can't tell a read from a write without asking.
Fix: Add annotations to each tool, e.g. { readOnlyHint: true } for tools that only read.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"treatment"
],
"properties": {
"q": {
"type": "string",
"description": "Text to match in the provider name"
},
"kind": {
"enum": [
"online",
"clinic",
"mobile"
],
"type": "string"
},
"near": {
"type": "string",
"description": "A UK postcode or outcode to search near; returns nearest first"
},
"sort": {
"enum": [
"distance",
"cqc_rating",
"google_rating",
"reviews"
],
"type": "string",
"description": "Order: distance (needs `near`), cqc_rating, google_rating, or reviews (Google count). Default: distance with `near`, else cqc_rating."
},
"limit": {
"type": "integer",
"default": 20,
"maximum": 50,
"minimum": 1
},
"nation": {
"enum": [
"england",
"scotland",
"wales",
"ni"
],
"type": "string"
},
"radius_km": {
"type": "number",
"default": 25,
"maximum": 100,
"minimum": 1,
"description": "Search radius for `near`, in km"
},
"town_slug": {
"type": "string"
},
"treatment": {
"enum": [
"glp1-weight-loss",
"hormone-therapy",
"iv-therapy",
"vitamin-injections"
],
"type": "string"
}
},
"additionalProperties": false
}