On the Register MCP
A public, read-only MCP server that allows agents to perform register lookups for UK weight loss clinics and online pharmacies against official regulator registers (CQC, GPhC, HIS, HIW) and access public health calculators such as BMI and TDEE.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://ontheregister.co.uk/api/mcpWhat its tools do
23 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Not annotated (23)
calc_reconstitutecalc_convertstorage_checksupply_runoutpatch_calendarhowlong_timelinehowlong_clearancepen_howtopen_troubleshootsideeffects_listcompare_medicinesprotein_targetbmi_checkweight_idealwaist_ratiofluid_targetenergy_tdeeproviders_searchproviders_getproviders_checkcompounds_listcompounds_getguides_list
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Passed Official MCP Registry namespace is tied to ontheregister.co.uk ·
- Passed Endpoint is on the registry namespace domain ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Check if a weight loss clinic is registered with the CQC
- Verify an online pharmacy against the GPhC register
- Calculate BMI using the public calculator tool
- Calculate TDEE using the public calculator tool
Source and maintenance
Protocol and capabilities
- Server
- on-the-register 0.1.0
- MCP protocol negotiated in check
- 2025-03-26
- Tools
- 23 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
23 advertised
calc_reconstitute
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.
{
"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
}calc_convert
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.
{
"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
}storage_check
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.
{
"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
}supply_runout
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.
{
"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
}patch_calendar
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.
{
"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
}howlong_timeline
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"drug"
],
"properties": {
"drug": {
"enum": [
"mounjaro",
"wegovy",
"ozempic",
"saxenda"
],
"type": "string"
}
},
"additionalProperties": false
}howlong_clearance
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.
{
"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
}pen_howto
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"pen"
],
"properties": {
"pen": {
"enum": [
"mounjaro",
"wegovy",
"ozempic",
"saxenda"
],
"type": "string"
}
},
"additionalProperties": false
}pen_troubleshoot
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.
{
"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
}sideeffects_list
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"drug"
],
"properties": {
"drug": {
"enum": [
"mounjaro",
"wegovy",
"ozempic",
"saxenda"
],
"type": "string"
}
},
"additionalProperties": false
}compare_medicines
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'.
{
"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
}protein_target
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.
{
"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
}bmi_check
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.
{
"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
}weight_ideal
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.
{
"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
}waist_ratio
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.
{
"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
}fluid_target
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.
{
"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
}energy_tdee
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.
{
"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
}providers_search
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.
{
"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
}providers_get
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string"
}
},
"additionalProperties": false
}providers_check
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.
{
"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
}compounds_list
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.
{
"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
}compounds_get
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string"
}
},
"additionalProperties": false
}guides_list
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.
{
"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
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1751 ms
- 95th percentile latency
- 1751 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1751 ms · metadata changed · 23 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http on-the-register-mcp https://ontheregister.co.uk/api/mcpCodex
codex mcp add on-the-register-mcp --url https://ontheregister.co.uk/api/mcpCursor
{
"mcpServers": {
"on-the-register-mcp": {
"url": "https://ontheregister.co.uk/api/mcp"
}
}
}Cline
{
"mcpServers": {
"on-the-register-mcp": {
"type": "streamableHttp",
"url": "https://ontheregister.co.uk/api/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"on-the-register-mcp": {
"type": "http",
"url": "https://ontheregister.co.uk/api/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http on-the-register-mcp https://ontheregister.co.uk/api/mcpClaude Desktop
https://ontheregister.co.uk/api/mcpWindsurf
{
"mcpServers": {
"on-the-register-mcp": {
"serverUrl": "https://ontheregister.co.uk/api/mcp"
}
}
}Let your agent find its tools
Find servers like On the Register MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other data and analytics servers
Do you run On the Register MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.