Koskamo

Findabis MCP

An MCP server providing access to the Findabis public directory of UK medical cannabis clinics, pharmacies, products, and strains. It offers read-only tools, guides, and prompts to help agents query and compare available medical cannabis services and products in the United Kingdom.

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.

Findabis MCP logo, by FindabisVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-06Operated by Findabis
MCP endpoint (Streamable HTTP)
https://findabis.com/api/mcp
Vendor documentation

What its tools do

10 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

10 of 10 have a description · 10 of 10 declare behavior hints · 9 of 9 with parameters document them all

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 findabis.com ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Search for medical cannabis clinics in the UK
  • Find pharmacies stocking specific cannabis products
  • Compare available cannabis strains and brands
  • Retrieve product details and supplier information

Source and maintenance

Vendor evidenceRegistry 0.4.0
Maintenance checked

Protocol and capabilities

Server
findabis 0.5.0
MCP protocol negotiated in check
2025-11-25
Tools
10 advertised
Resources
3 advertised
Resource templates
0 advertised
Prompts
3 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "prompts": {
    "listChanged": true
  },
  "resources": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Public directory of UK medical cannabis clinics, pharmacies, products and strains. Findabis is a directory and comparison service. It is not a clinic, not a pharmacy, and does not give medical advice. Anything here describes what providers offer, never what a person should take. Treatment decisions belong to a patient and a specialist prescriber. When answering from this data: - Prices and stock change daily. Cite the product page rather than quoting a figure you cannot re-check. - A product being listed does not mean any given patient can be prescribed it. - Possession without a prescription remains an offence in the UK. Say so if a question implies otherwise. How to use these tools: - A question that names something whose kind you do not know: search_findabis. Each match carries its kind, slug, page URL and a one-line summary; call the specific tool for more. - "Near me": find_clinics or find_pharmacies with `near` (a UK postcode or town). Many clinics also consult online UK-wide and most pharmacies deliver, so say so when few are close. - One listing in full: get_product for a product; get_listing (kind + slug) for a clinic, pharmacy, strain or brand, with its FAQs and opening hours. Slugs come from the find_ tools or search_findabis — never guess one. - "Which is cheapest" or "what is the difference": compare_providers with 2-6 slugs. Services only: fees and delivery, never medicines. - "How many", "typical cost", "what does Findabis cover": get_directory_facts, and cite the figure with its date. - Lists return at most 25 rows and say how many matched; narrow with a filter before paging with `offset`. - Nothing is ordered by sponsorship: results come by distance, name, fee or rating, as asked. - For how a prescription is obtained and whom clinics take, read the resources findabis://guide/how-to-get-a-prescription and findabis://guide/eligibility rather than answering from memory. - Give the Findabis page URL beside a fact, so the person can check it.

Tools

10 advertised

find_clinics — Find medical cannabis clinics
Advertised by the server during the last successful anonymous check.
Advertised read-only

Find UK clinics that can prescribe cannabis-based medicines. Use `near` (postcode or town) for 'near me' questions: nearest first, with miles. Filter by the conditions a clinic's published policy lists, consultation type (online, in person, phone), CQC rating, first-consultation fee, accepting patients and patient type; sort by distance, year-one clinic fees or rating. Returns up to 25 clinics at a time (page on with `offset`; past the first 60, `page`), each with slug, page URL, town, distance, first and follow-up fees, estimated year-one clinic fees (never medicine), consultation types, CQC rating, review score and which patient types it takes. A listed condition is the clinic's referral scope, not a statement that anyone qualifies: only a specialist decides that. It does not return doctors or appointment availability. For one clinic in full, use get_listing; to weigh several, compare_providers.

find_clinics input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "cqc": {
      "enum": [
        "GOOD_OR_BETTER",
        "OUTSTANDING",
        "GOOD",
        "REQUIRES_IMPROVEMENT",
        "NOT_RATED"
      ],
      "type": "string",
      "description": "CQC rating filter; GOOD_OR_BETTER keeps Good and Outstanding."
    },
    "near": {
      "type": "string",
      "maxLength": 64,
      "minLength": 2,
      "description": "A UK postcode, outcode or town, e.g. \"M1 1AE\", \"LS6\" or \"Bristol\". Sorts nearest first and adds miles."
    },
    "page": {
      "type": "integer",
      "maximum": 50,
      "minimum": 1,
      "description": "Which window of 60 directory rows to read; `offset` pages inside it. Default 1. The answer says when a later window exists."
    },
    "sort": {
      "enum": [
        "distance",
        "az",
        "za",
        "cheapest",
        "dearest",
        "rating"
      ],
      "type": "string",
      "description": "distance (default with `near`), az (default otherwise), za, cheapest / dearest by year-one clinic fees, rating."
    },
    "limit": {
      "type": "integer",
      "maximum": 25,
      "minimum": 1,
      "description": "How many to return, 1-25. Default 10."
    },
    "query": {
      "type": "string",
      "maxLength": 120,
      "description": "Clinic name, matched as text. For a place use `near`."
    },
    "offset": {
      "type": "integer",
      "maximum": 500,
      "minimum": 0,
      "description": "Skip this many results, for the next page (the answer says which offset comes next). Default 0."
    },
    "condition": {
      "type": "string",
      "maxLength": 120,
      "description": "Only clinics whose published policy lists this condition. One of: Anxiety / Depression; PTSD; Insomnia / Sleep disorders; Chronic pain; Neuropathic pain; Multiple Sclerosis / Spasticity; Cancer symptoms; IBD (Crohn's / Ulcerative Colitis); Migraine; Arthritis / inflammatory pain; ADHD / Autism spectrum symptoms; Endometriosis / women's health symptoms. A listed condition is the clinic's referral scope, never a statement that anyone qualifies."
    },
    "patientType": {
      "enum": [
        "NEW_PATIENT",
        "TRANSFER",
        "ACTIVE_PATIENT"
      ],
      "type": "string",
      "description": "NEW_PATIENT, TRANSFER or ACTIVE_PATIENT. Drops clinics whose policy does not take it, and prices year one for that route."
    },
    "radiusMiles": {
      "type": "number",
      "maximum": 500,
      "description": "Only within this many miles of `near`. Ignored without `near`.",
      "exclusiveMinimum": 0
    },
    "consultationType": {
      "enum": [
        "ONLINE",
        "IN_PERSON",
        "PHONE"
      ],
      "type": "string",
      "description": "Only clinics offering ONLINE (video), IN_PERSON or PHONE."
    },
    "acceptingPatients": {
      "type": "boolean",
      "description": "Only clinics showing 'Accepting patients' (an active published policy)."
    },
    "maxFirstConsultationFee": {
      "type": "number",
      "description": "Only clinics whose first consultation costs at most this, in GBP.",
      "exclusiveMinimum": 0
    }
  },
  "additionalProperties": false
}
find_clinics output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "results",
    "total"
  ],
  "properties": {
    "note": {
      "type": "string"
    },
    "page": {
      "type": "integer",
      "description": "Which window of 60 directory rows this answer read"
    },
    "total": {
      "type": "integer",
      "description": "How many matched in all; narrow the query when this exceeds the results"
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "slug",
          "url",
          "city",
          "postcode",
          "distanceMiles",
          "currency",
          "initialConsultationFee",
          "followUpConsultationFee",
          "firstYearClinicFees",
          "consultationTypes",
          "cqcRating",
          "rating",
          "acceptingPatients",
          "patientTypes"
        ],
        "properties": {
          "url": {
            "anyOf": [
              {
                "type": "string",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ],
            "description": "Canonical Findabis page, absolute; null when the listing has no page"
          },
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": "string"
          },
          "slug": {
            "type": [
              "string",
              "null"
            ]
          },
          "rating": {
            "anyOf": [
              {
                "type": "object",
                "required": [
                  "average",
                  "count"
                ],
                "properties": {
                  "count": {
                    "type": "integer"
                  },
                  "average": {
                    "type": "number"
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ],
            "description": "Published patient reviews; null when there are none"
          },
          "currency": {
            "type": "string"
          },
          "postcode": {
            "type": [
              "string",
              "null"
            ]
          },
          "cqcRating": {
            "type": [
              "string",
              "null"
            ]
          },
          "patientTypes": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "enum": [
                    "NEW_PATIENT",
                    "TRANSFER",
                    "ACTIVE_PATIENT"
                  ],
                  "type": "string"
                }
              },
              {
                "type": "null"
              }
            ],
            "description": "Patient types the published policy takes; null when the clinic publishes no policy"
          },
          "distanceMiles": {
            "type": [
              "number",
              "null"
            ],
            "description": "Miles from `near`; null when no place was given"
          },
          "acceptingPatients": {
            "type": "boolean",
            "description": "Shows 'Accepting patients' (an active published eligibility policy)"
          },
          "consultationTypes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "firstYearClinicFees": {
            "type": [
              "number",
              "null"
            ],
            "description": "Estimated year-one clinic fees (consultations, membership, the clinic's prescription fee) for the asked patient type with 4 follow-ups and 12 prescriptions; never includes medicine; null when no price list is published"
          },
          "initialConsultationFee": {
            "type": [
              "number",
              "null"
            ],
            "description": "In `currency`; null when not published"
          },
          "followUpConsultationFee": {
            "$ref": "#/properties/results/items/properties/initialConsultationFee"
          }
        },
        "additionalProperties": false
      }
    },
    "directoryTotal": {
      "type": "integer",
      "description": "The whole directory, when the tool read one window of it"
    }
  },
  "additionalProperties": false
}
find_clinics annotations
{
  "title": "Find medical cannabis clinics",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
find_pharmacies — Find dispensing pharmacies
Advertised by the server during the last successful anonymous check.
Advertised read-only

Find UK pharmacies that dispense cannabis-based medicines against a prescription a clinic has already issued. Use `near` (postcode or town) for nearest first with miles; filter by delivery, in-person collection and review score. Returns up to 25 pharmacies at a time (page on with `offset`; past the first 60, `page`) with slug, page URL, town, distance, delivery and collection, and review score. A pharmacy cannot prescribe. It does not return stock, prices, or which products a pharmacy holds: those are shown only to patients and professionals with access. For delivery prices and GPhC registration use get_listing, or compare_providers for several.

find_pharmacies input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "near": {
      "type": "string",
      "maxLength": 64,
      "minLength": 2,
      "description": "A UK postcode, outcode or town, e.g. \"M1 1AE\", \"LS6\" or \"Bristol\". Sorts nearest first and adds miles."
    },
    "page": {
      "type": "integer",
      "maximum": 50,
      "minimum": 1,
      "description": "Which window of 60 directory rows to read; `offset` pages inside it. Default 1. The answer says when a later window exists."
    },
    "sort": {
      "enum": [
        "distance",
        "az",
        "za",
        "city",
        "rating"
      ],
      "type": "string",
      "description": "distance (default with `near`), az (default otherwise), za, city, rating."
    },
    "limit": {
      "type": "integer",
      "maximum": 25,
      "minimum": 1,
      "description": "How many to return, 1-25. Default 10."
    },
    "query": {
      "type": "string",
      "maxLength": 120,
      "description": "Pharmacy name, matched as text. For a place use `near`."
    },
    "offset": {
      "type": "integer",
      "maximum": 500,
      "minimum": 0,
      "description": "Skip this many results, for the next page (the answer says which offset comes next). Default 0."
    },
    "delivers": {
      "type": "boolean",
      "description": "Only pharmacies that deliver (most dispense UK-wide by post)."
    },
    "minRating": {
      "enum": [
        "3_plus",
        "4_plus"
      ],
      "type": "string",
      "description": "Only pharmacies with patient reviews averaging 3+ or 4+."
    },
    "collection": {
      "type": "boolean",
      "description": "Only pharmacies offering in-person collection."
    },
    "radiusMiles": {
      "type": "number",
      "maximum": 500,
      "description": "Only within this many miles of `near`. Ignored without `near`.",
      "exclusiveMinimum": 0
    }
  },
  "additionalProperties": false
}
find_pharmacies output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "results",
    "total"
  ],
  "properties": {
    "note": {
      "type": "string"
    },
    "page": {
      "type": "integer",
      "description": "Which window of 60 directory rows this answer read"
    },
    "total": {
      "type": "integer",
      "description": "How many matched in all; narrow the query when this exceeds the results"
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "slug",
          "url",
          "city",
          "postcode",
          "distanceMiles",
          "offersDelivery",
          "offersCollection",
          "rating"
        ],
        "properties": {
          "url": {
            "anyOf": [
              {
                "type": "string",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ],
            "description": "Canonical Findabis page, absolute; null when the listing has no page"
          },
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": "string"
          },
          "slug": {
            "type": [
              "string",
              "null"
            ]
          },
          "rating": {
            "anyOf": [
              {
                "type": "object",
                "required": [
                  "average",
                  "count"
                ],
                "properties": {
                  "count": {
                    "type": "integer"
                  },
                  "average": {
                    "type": "number"
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ],
            "description": "Published patient reviews; null when there are none"
          },
          "postcode": {
            "type": [
              "string",
              "null"
            ]
          },
          "distanceMiles": {
            "type": [
              "number",
              "null"
            ],
            "description": "Miles from `near`; null when no place was given"
          },
          "offersDelivery": {
            "type": "boolean"
          },
          "offersCollection": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      }
    },
    "directoryTotal": {
      "type": "integer",
      "description": "The whole directory, when the tool read one window of it"
    }
  },
  "additionalProperties": false
}
find_pharmacies annotations
{
  "title": "Find dispensing pharmacies",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
find_products — Find medical cannabis products
Advertised by the server during the last successful anonymous check.
Advertised read-only

Find cannabis-based medicines on the UK market by product, brand or strain name, or by dose form. Returns up to 25 products at a time (page on with `offset`) with page URL, slug, brand, dose form, THC and CBD content, and the latest price a UK pharmacy charged (naming no pharmacy) when Findabis publishes one. It does not return stock, pack sizes on offer, per-pharmacy prices or which pharmacies dispense a product: those are shown only to patients and professionals with access. A listing is not a statement that a product suits anyone. For one product in full, use get_product with its slug.

find_products input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "sort": {
      "enum": [
        "name_asc",
        "name_desc"
      ],
      "type": "string",
      "description": "Alphabetical, name_asc (default) or name_desc."
    },
    "limit": {
      "type": "integer",
      "maximum": 25,
      "minimum": 1,
      "description": "How many to return, 1-25. Default 10."
    },
    "query": {
      "type": "string",
      "maxLength": 120,
      "description": "Product, brand or strain name, e.g. \"Pink Kush\" or \"Tilray\". Omit to browse."
    },
    "offset": {
      "type": "integer",
      "maximum": 500,
      "minimum": 0,
      "description": "Skip this many results, for the next page (the answer says which offset comes next). Default 0."
    },
    "category": {
      "enum": [
        "FLOWER",
        "OIL",
        "CAPSULE",
        "EDIBLE",
        "TOPICAL",
        "CARTRIDGE",
        "HASH"
      ],
      "type": "string",
      "description": "Dose form. CARTRIDGE is a vape cartridge."
    },
    "genetics": {
      "enum": [
        "Indica",
        "Sativa",
        "Hybrid"
      ],
      "type": "string",
      "description": "The strain type: Indica, Sativa or Hybrid (the product's own, else its primary strain's)."
    }
  },
  "additionalProperties": false
}
find_products output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "results",
    "total"
  ],
  "properties": {
    "note": {
      "type": "string"
    },
    "page": {
      "type": "integer",
      "description": "Which window of 60 directory rows this answer read"
    },
    "total": {
      "type": "integer",
      "description": "How many matched in all; narrow the query when this exceeds the results"
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "slug",
          "url",
          "brand",
          "category",
          "thc",
          "cbd",
          "discontinued",
          "latestPrice"
        ],
        "properties": {
          "cbd": {
            "type": [
              "string",
              "null"
            ],
            "description": "CBD content as the page prints it, unit included"
          },
          "thc": {
            "type": [
              "string",
              "null"
            ],
            "description": "THC content as the page prints it, unit included"
          },
          "url": {
            "anyOf": [
              {
                "type": "string",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ],
            "description": "Canonical Findabis page, absolute; null when the listing has no page"
          },
          "name": {
            "type": "string"
          },
          "slug": {
            "type": [
              "string",
              "null"
            ]
          },
          "brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "category": {
            "type": "string",
            "description": "Dose form: FLOWER, OIL, CAPSULE, EDIBLE, TOPICAL, CARTRIDGE or HASH"
          },
          "latestPrice": {
            "anyOf": [
              {
                "type": "object",
                "required": [
                  "amount",
                  "currency"
                ],
                "properties": {
                  "amount": {
                    "type": "number"
                  },
                  "currency": {
                    "type": "string"
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ],
            "description": "The latest price any UK pharmacy charged, naming no pharmacy; null when not published"
          },
          "discontinued": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      }
    },
    "directoryTotal": {
      "type": "integer",
      "description": "The whole directory, when the tool read one window of it"
    }
  },
  "additionalProperties": false
}
find_products annotations
{
  "title": "Find medical cannabis products",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_product — Get one product in full
Advertised by the server during the last successful anonymous check.
Advertised read-only

Everything public about one product, by its slug from find_products or search_findabis: dose form and strength, strain and brand, terpenes, what it contains (carrier oil, allergens, capsule shell), dosage and storage notes, patient leaflets and FAQs, and its price range across UK pharmacies when Findabis publishes one. Not returned: stock, pack sizes on offer, and which pharmacies dispense it at what price — the product page shows those only to patients and professionals with access. It describes the product, never who should take it.

get_product input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "slug"
  ],
  "properties": {
    "slug": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "description": "The product page slug from find_products or search_findabis, e.g. \"demo-kush-t20-c1\"."
    }
  },
  "additionalProperties": false
}
get_product output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "name",
    "slug",
    "url",
    "category",
    "form",
    "brand",
    "thc",
    "cbd",
    "chemotype",
    "discontinued",
    "strain",
    "terpenes",
    "carrierOil",
    "allergens",
    "capsuleShell",
    "priceRange",
    "oilFlowerEquivalence",
    "description",
    "descriptionAiAssisted",
    "dosage",
    "storage",
    "image",
    "documents",
    "faqs",
    "withheld"
  ],
  "properties": {
    "cbd": {
      "$ref": "#/properties/brand"
    },
    "thc": {
      "$ref": "#/properties/brand"
    },
    "url": {
      "anyOf": [
        {
          "type": "string",
          "format": "uri"
        },
        {
          "type": "null"
        }
      ]
    },
    "faqs": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "question",
          "answer",
          "aiAssisted"
        ],
        "properties": {
          "answer": {
            "type": "string"
          },
          "question": {
            "type": "string"
          },
          "aiAssisted": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      }
    },
    "form": {
      "type": [
        "string",
        "null"
      ],
      "description": "Dose form as the page labels it, e.g. \"Dried flower\""
    },
    "name": {
      "type": "string"
    },
    "slug": {
      "type": "string"
    },
    "brand": {
      "type": [
        "string",
        "null"
      ]
    },
    "image": {
      "anyOf": [
        {
          "type": "string",
          "format": "uri"
        },
        {
          "type": "null"
        }
      ]
    },
    "dosage": {
      "$ref": "#/properties/brand"
    },
    "strain": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "name",
            "genetics",
            "url"
          ],
          "properties": {
            "url": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uri"
                },
                {
                  "type": "null"
                }
              ]
            },
            "name": {
              "type": "string"
            },
            "genetics": {
              "$ref": "#/properties/brand"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "storage": {
      "$ref": "#/properties/brand"
    },
    "category": {
      "type": "string"
    },
    "terpenes": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "percent"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "percent": {
            "type": [
              "number",
              "null"
            ]
          }
        },
        "additionalProperties": false
      }
    },
    "withheld": {
      "type": "string"
    },
    "allergens": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "chemotype": {
      "type": [
        "string",
        "null"
      ],
      "description": "THC-dominant, CBD-dominant or balanced, from the cannabinoid figures"
    },
    "documents": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "title",
          "kind",
          "url"
        ],
        "properties": {
          "url": {
            "anyOf": [
              {
                "type": "string",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ]
          },
          "kind": {
            "type": "string"
          },
          "title": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "carrierOil": {
      "$ref": "#/properties/brand"
    },
    "priceRange": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "min",
            "max",
            "currency"
          ],
          "properties": {
            "max": {
              "type": "number"
            },
            "min": {
              "type": "number"
            },
            "currency": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "Lowest to highest current price across UK pharmacies, naming none; null when not published"
    },
    "description": {
      "$ref": "#/properties/brand"
    },
    "capsuleShell": {
      "$ref": "#/properties/brand"
    },
    "discontinued": {
      "type": "boolean"
    },
    "oilFlowerEquivalence": {
      "$ref": "#/properties/brand"
    },
    "descriptionAiAssisted": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}
get_product annotations
{
  "title": "Get one product in full",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
find_strains — Find cannabis strains
Advertised by the server during the last successful anonymous check.
Advertised read-only

Find cannabis strain profiles by name or genetics (Indica, Sativa or Hybrid). Returns up to 25 strains at a time (page on with `offset`) with page URL, slug, genetics and THC and CBD ranges. A strain is a plant lineage, not something a pharmacy dispenses — use find_products for that. Findabis publishes no effects, medical uses or side effects for strains, so none are returned and none should be inferred. For terpenes, flavours and lineage, use get_listing with kind "strain".

find_strains input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 25,
      "minimum": 1,
      "description": "How many to return, 1-25. Default 10."
    },
    "query": {
      "type": "string",
      "maxLength": 120,
      "description": "Strain name or nickname, e.g. \"Gelato\". Omit to browse."
    },
    "offset": {
      "type": "integer",
      "maximum": 500,
      "minimum": 0,
      "description": "Skip this many results, for the next page (the answer says which offset comes next). Default 0."
    },
    "genetics": {
      "enum": [
        "Indica",
        "Sativa",
        "Hybrid"
      ],
      "type": "string",
      "description": "The strain type: Indica, Sativa or Hybrid."
    }
  },
  "additionalProperties": false
}
find_strains output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "results",
    "total"
  ],
  "properties": {
    "note": {
      "type": "string"
    },
    "page": {
      "type": "integer",
      "description": "Which window of 60 directory rows this answer read"
    },
    "total": {
      "type": "integer",
      "description": "How many matched in all; narrow the query when this exceeds the results"
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "slug",
          "url",
          "genetics",
          "thcPercent",
          "cbdPercent"
        ],
        "properties": {
          "url": {
            "anyOf": [
              {
                "type": "string",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ],
            "description": "Canonical Findabis page, absolute; null when the listing has no page"
          },
          "name": {
            "type": "string"
          },
          "slug": {
            "type": [
              "string",
              "null"
            ]
          },
          "genetics": {
            "type": [
              "string",
              "null"
            ]
          },
          "cbdPercent": {
            "type": [
              "string",
              "null"
            ]
          },
          "thcPercent": {
            "type": [
              "string",
              "null"
            ],
            "description": "A figure or a range, e.g. \"18-22\""
          }
        },
        "additionalProperties": false
      }
    },
    "directoryTotal": {
      "type": "integer",
      "description": "The whole directory, when the tool read one window of it"
    }
  },
  "additionalProperties": false
}
find_strains annotations
{
  "title": "Find cannabis strains",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
find_brands — Find medical cannabis brands
Advertised by the server during the last successful anonymous check.
Advertised read-only

Find the brands (makers) of cannabis-based medicines listed on Findabis, by name or by the dose forms they make. Returns up to 25 brands at a time (page on with `offset`) with slug, page URL, town and country, website, and how many of their products Findabis lists — a count, never stock or which pharmacies hold them. Sorted by name or by product count, never by sponsorship. A listing is not an endorsement. For one brand in full, use get_listing with kind "brand"; for its products, find_products with the brand name as `query`.

find_brands input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "sort": {
      "enum": [
        "name_asc",
        "name_desc",
        "products_desc"
      ],
      "type": "string",
      "description": "name_asc (default), name_desc, or products_desc (most listed products first)."
    },
    "limit": {
      "type": "integer",
      "maximum": 25,
      "minimum": 1,
      "description": "How many to return, 1-25. Default 10."
    },
    "query": {
      "type": "string",
      "maxLength": 120,
      "description": "Brand name, matched as text. Omit to browse."
    },
    "offset": {
      "type": "integer",
      "maximum": 500,
      "minimum": 0,
      "description": "Skip this many results, for the next page (the answer says which offset comes next). Default 0."
    },
    "category": {
      "enum": [
        "FLOWER",
        "OIL",
        "CAPSULE",
        "EDIBLE",
        "TOPICAL",
        "CARTRIDGE",
        "HASH"
      ],
      "type": "string",
      "description": "Only brands with a listed product in this dose form. CARTRIDGE is a vape cartridge."
    }
  },
  "additionalProperties": false
}
find_brands output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "results",
    "total"
  ],
  "properties": {
    "note": {
      "type": "string"
    },
    "page": {
      "type": "integer",
      "description": "Which window of 60 directory rows this answer read"
    },
    "total": {
      "type": "integer",
      "description": "How many matched in all; narrow the query when this exceeds the results"
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "slug",
          "url",
          "city",
          "country",
          "website",
          "productCount"
        ],
        "properties": {
          "url": {
            "anyOf": [
              {
                "type": "string",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ],
            "description": "Canonical Findabis page, absolute; null when the listing has no page"
          },
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": "string"
          },
          "slug": {
            "type": [
              "string",
              "null"
            ]
          },
          "country": {
            "type": [
              "string",
              "null"
            ]
          },
          "website": {
            "type": [
              "string",
              "null"
            ]
          },
          "productCount": {
            "type": "integer",
            "description": "Products of this brand listed on Findabis (approved and not withdrawn); a count, never stock"
          }
        },
        "additionalProperties": false
      }
    },
    "directoryTotal": {
      "type": "integer",
      "description": "The whole directory, when the tool read one window of it"
    }
  },
  "additionalProperties": false
}
find_brands annotations
{
  "title": "Find medical cannabis brands",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_listing — Get one clinic, pharmacy, strain or brand
Advertised by the server during the last successful anonymous check.
Advertised read-only

The public facts on one clinic, pharmacy, strain or brand page, by `kind` and the page `slug` from find_clinics, find_pharmacies, find_strains, find_brands or search_findabis. Clinic: address, opening hours, consultation types and fees, published price list, CQC rating and registration, which patients its policy takes, partner pharmacies. Pharmacy: address, opening hours, delivery and collection, delivery prices, GPhC registration and inspection outcome, partner clinics. Strain: genetics, cannabinoid ranges, terpenes, flavours, lineage, products made from it. Brand: location, website and products. Every kind: the page's own FAQs. Not returned: stock, per-pharmacy medicine prices, staff, or anything about patients. For a product, use get_product.

get_listing input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "kind",
    "slug"
  ],
  "properties": {
    "kind": {
      "enum": [
        "clinic",
        "pharmacy",
        "strain",
        "brand"
      ],
      "type": "string",
      "description": "What the slug names: clinic, pharmacy, strain or brand."
    },
    "slug": {
      "type": "string",
      "pattern": "^[a-z0-9][a-z0-9-]*$",
      "maxLength": 200,
      "minLength": 1,
      "description": "The page slug from a find_* tool or search_findabis, e.g. \"green-leaf-clinic\"."
    }
  },
  "additionalProperties": false
}
get_listing output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "kind",
    "name",
    "slug",
    "url",
    "description",
    "descriptionAiAssisted",
    "faqs"
  ],
  "properties": {
    "url": {
      "anyOf": [
        {
          "type": "string",
          "format": "uri"
        },
        {
          "type": "null"
        }
      ]
    },
    "faqs": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "question",
          "answer",
          "aiAssisted"
        ],
        "properties": {
          "answer": {
            "type": "string"
          },
          "question": {
            "type": "string"
          },
          "aiAssisted": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "description": "The page's own FAQs, at most five; an answer is marked AI-assisted when the page labels it so"
    },
    "kind": {
      "enum": [
        "clinic",
        "pharmacy",
        "strain",
        "brand"
      ],
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "slug": {
      "type": "string"
    },
    "brand": {
      "type": "object",
      "required": [
        "city",
        "postcode",
        "country",
        "website",
        "products"
      ],
      "properties": {
        "city": {
          "$ref": "#/properties/description"
        },
        "country": {
          "$ref": "#/properties/description"
        },
        "website": {
          "$ref": "#/properties/description"
        },
        "postcode": {
          "$ref": "#/properties/description"
        },
        "products": {
          "$ref": "#/properties/clinic/properties/partnerPharmacies"
        }
      },
      "additionalProperties": false
    },
    "clinic": {
      "type": "object",
      "required": [
        "name",
        "slug",
        "url",
        "city",
        "postcode",
        "distanceMiles",
        "currency",
        "initialConsultationFee",
        "followUpConsultationFee",
        "firstYearClinicFees",
        "consultationTypes",
        "cqcRating",
        "rating",
        "acceptingPatients",
        "patientTypes",
        "address",
        "website",
        "pricingModel",
        "priceList",
        "cqcRegistration",
        "cqcReportUrl",
        "minimumAge",
        "maximumAge",
        "openingHours",
        "onlineHours",
        "partnerPharmacies",
        "otherLocations"
      ],
      "properties": {
        "url": {
          "anyOf": [
            {
              "type": "string",
              "format": "uri"
            },
            {
              "type": "null"
            }
          ],
          "description": "Canonical Findabis page, absolute; null when the listing has no page"
        },
        "city": {
          "type": [
            "string",
            "null"
          ]
        },
        "name": {
          "type": "string"
        },
        "slug": {
          "type": [
            "string",
            "null"
          ]
        },
        "rating": {
          "anyOf": [
            {
              "type": "object",
              "required": [
                "average",
                "count"
              ],
              "properties": {
                "count": {
                  "type": "integer"
                },
                "average": {
                  "type": "number"
                }
              },
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ],
          "description": "Published patient reviews; null when there are none"
        },
        "address": {
          "$ref": "#/properties/description"
        },
        "website": {
          "$ref": "#/properties/description"
        },
        "currency": {
          "type": "string"
        },
        "postcode": {
          "type": [
            "string",
            "null"
          ]
        },
        "cqcRating": {
          "type": [
            "string",
            "null"
          ]
        },
        "priceList": {
          "type": "object",
          "description": "Published fees by name, in `currency`; absent = not set",
          "additionalProperties": {
            "type": "number"
          }
        },
        "maximumAge": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ]
        },
        "minimumAge": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ]
        },
        "onlineHours": {
          "anyOf": [
            {
              "$ref": "#/properties/clinic/properties/openingHours/anyOf/0"
            },
            {
              "type": "null"
            }
          ],
          "description": "The online (video) diary, when the clinic publishes separate hours for it"
        },
        "cqcReportUrl": {
          "$ref": "#/properties/description"
        },
        "openingHours": {
          "anyOf": [
            {
              "type": "object",
              "required": [
                "monday",
                "tuesday",
                "wednesday",
                "thursday",
                "friday",
                "saturday",
                "sunday"
              ],
              "properties": {
                "friday": {
                  "$ref": "#/properties/description"
                },
                "monday": {
                  "$ref": "#/properties/description"
                },
                "sunday": {
                  "$ref": "#/properties/description"
                },
                "tuesday": {
                  "$ref": "#/properties/description"
                },
                "saturday": {
                  "$ref": "#/properties/description"
                },
                "thursday": {
                  "$ref": "#/properties/description"
                },
                "wednesday": {
                  "$ref": "#/properties/description"
                }
              },
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        },
        "patientTypes": {
          "anyOf": [
            {
              "type": "array",
              "items": {
                "enum": [
                  "NEW_PATIENT",
                  "TRANSFER",
                  "ACTIVE_PATIENT"
                ],
                "type": "string"
              }
            },
            {
              "type": "null"
            }
          ],
          "description": "Patient types the published policy takes; null when the clinic publishes no policy"
        },
        "pricingModel": {
          "$ref": "#/properties/description"
        },
        "distanceMiles": {
          "type": [
            "number",
            "null"
          ],
          "description": "Miles from `near`; null when no place was given"
        },
        "otherLocations": {
          "$ref": "#/properties/clinic/properties/partnerPharmacies"
        },
        "cqcRegistration": {
          "$ref": "#/properties/description"
        },
        "acceptingPatients": {
          "type": "boolean",
          "description": "Shows 'Accepting patients' (an active published eligibility policy)"
        },
        "consultationTypes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "partnerPharmacies": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "name",
              "url"
            ],
            "properties": {
              "url": {
                "$ref": "#/properties/clinic/properties/url"
              },
              "name": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "firstYearClinicFees": {
          "type": [
            "number",
            "null"
          ],
          "description": "Estimated year-one clinic fees (consultations, membership, the clinic's prescription fee) for the asked patient type with 4 follow-ups and 12 prescriptions; never includes medicine; null when no price list is published"
        },
        "initialConsultationFee": {
          "type": [
            "number",
            "null"
          ],
          "description": "In `currency`; null when not published"
        },
        "followUpConsultationFee": {
          "$ref": "#/properties/clinic/properties/initialConsultationFee"
        }
      },
      "additionalProperties": false
    },
    "strain": {
      "type": "object",
      "required": [
        "genetics",
        "thcPercent",
        "cbdPercent",
        "terpenes",
        "flavours",
        "parents",
        "children",
        "products"
      ],
      "properties": {
        "parents": {
          "$ref": "#/properties/clinic/properties/partnerPharmacies"
        },
        "children": {
          "$ref": "#/properties/clinic/properties/partnerPharmacies"
        },
        "flavours": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "genetics": {
          "$ref": "#/properties/description"
        },
        "products": {
          "type": "array",
          "items": {
            "$ref": "#/properties/clinic/properties/partnerPharmacies/items"
          },
          "description": "Products made from this strain — names and pages only"
        },
        "terpenes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "cbdPercent": {
          "$ref": "#/properties/description"
        },
        "thcPercent": {
          "$ref": "#/properties/description"
        }
      },
      "additionalProperties": false
    },
    "pharmacy": {
      "type": "object",
      "required": [
        "name",
        "slug",
        "url",
        "city",
        "postcode",
        "distanceMiles",
        "offersDelivery",
        "offersCollection",
        "rating",
        "address",
        "website",
        "deliveryOptions",
        "gphcNumber",
        "gphcInspectionOutcome",
        "gphcReportUrl",
        "openingHours",
        "partnerClinics",
        "otherLocations"
      ],
      "properties": {
        "url": {
          "$ref": "#/properties/clinic/properties/url"
        },
        "city": {
          "type": [
            "string",
            "null"
          ]
        },
        "name": {
          "type": "string"
        },
        "slug": {
          "type": [
            "string",
            "null"
          ]
        },
        "rating": {
          "$ref": "#/properties/clinic/properties/rating"
        },
        "address": {
          "$ref": "#/properties/description"
        },
        "website": {
          "$ref": "#/properties/description"
        },
        "postcode": {
          "type": [
            "string",
            "null"
          ]
        },
        "gphcNumber": {
          "$ref": "#/properties/description"
        },
        "openingHours": {
          "$ref": "#/properties/clinic/properties/openingHours"
        },
        "distanceMiles": {
          "type": [
            "number",
            "null"
          ],
          "description": "Miles from `near`; null when no place was given"
        },
        "gphcReportUrl": {
          "$ref": "#/properties/description"
        },
        "offersDelivery": {
          "type": "boolean"
        },
        "otherLocations": {
          "$ref": "#/properties/clinic/properties/partnerPharmacies"
        },
        "partnerClinics": {
          "$ref": "#/properties/clinic/properties/partnerPharmacies"
        },
        "deliveryOptions": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "carrier",
              "service",
              "cost",
              "freeOver",
              "estimatedDays"
            ],
            "properties": {
              "cost": {
                "type": "number"
              },
              "carrier": {
                "$ref": "#/properties/description"
              },
              "service": {
                "$ref": "#/properties/description"
              },
              "freeOver": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "estimatedDays": {
                "$ref": "#/properties/description"
              }
            },
            "additionalProperties": false
          }
        },
        "offersCollection": {
          "type": "boolean"
        },
        "gphcInspectionOutcome": {
          "$ref": "#/properties/description"
        }
      },
      "additionalProperties": false
    },
    "description": {
      "type": [
        "string",
        "null"
      ]
    },
    "descriptionAiAssisted": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}
get_listing annotations
{
  "title": "Get one clinic, pharmacy, strain or brand",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
compare_providers — Compare clinics or pharmacies
Advertised by the server during the last successful anonymous check.
Advertised read-only

Two to six clinics, or two to six pharmacies, side by side by slug. Clinics: first and follow-up fees, estimated year-one and later-year clinic fees with a line-by-line breakdown for the patient type and visit counts you give, consultation types, CQC rating, reviews and whether accepting patients. Pharmacies: delivery and its cheapest price, free-delivery threshold, collection, GPhC registration and inspection outcome, reviews. Use it for 'which is cheapest', 'what's the difference between'. Services only: it never compares medicines or medicine prices, and the figures are each provider's published ones.

compare_providers input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "kind",
    "slugs"
  ],
  "properties": {
    "kind": {
      "enum": [
        "clinic",
        "pharmacy"
      ],
      "type": "string",
      "description": "Compare clinics or pharmacies (not both at once)."
    },
    "slugs": {
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[a-z0-9][a-z0-9-]*$",
        "maxLength": 200,
        "minLength": 1,
        "description": "The page slug from a find_* tool or search_findabis, e.g. \"green-leaf-clinic\"."
      },
      "maxItems": 6,
      "minItems": 2,
      "description": "2-6 page slugs from find_clinics / find_pharmacies."
    },
    "patientType": {
      "enum": [
        "NEW_PATIENT",
        "TRANSFER",
        "ACTIVE_PATIENT"
      ],
      "type": "string",
      "description": "Clinics: price year one as NEW_PATIENT (default), TRANSFER or ACTIVE_PATIENT."
    },
    "followUpsPerYear": {
      "type": "integer",
      "maximum": 24,
      "minimum": 0,
      "description": "Clinics: follow-up consultations a year. Default 4."
    },
    "prescriptionsPerYear": {
      "type": "integer",
      "maximum": 24,
      "minimum": 0,
      "description": "Clinics: repeat prescriptions a year. Default 12."
    }
  },
  "additionalProperties": false
}
compare_providers output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "kind",
    "missing",
    "note"
  ],
  "properties": {
    "kind": {
      "enum": [
        "clinic",
        "pharmacy"
      ],
      "type": "string"
    },
    "note": {
      "type": "string"
    },
    "clinics": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "slug",
          "url",
          "initialConsultationFee",
          "followUpConsultationFee",
          "yearOneClinicFees",
          "laterYearClinicFees",
          "feeBreakdown",
          "consultationTypes",
          "cqcRating",
          "rating",
          "acceptingPatients",
          "partnerPharmacies"
        ],
        "properties": {
          "url": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "rating": {
            "anyOf": [
              {
                "type": "object",
                "required": [
                  "average",
                  "count"
                ],
                "properties": {
                  "count": {
                    "type": "number"
                  },
                  "average": {
                    "type": "number"
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "cqcRating": {
            "type": [
              "string",
              "null"
            ]
          },
          "feeBreakdown": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "label",
                "cost",
                "recurring"
              ],
              "properties": {
                "cost": {
                  "type": "number"
                },
                "label": {
                  "type": "string"
                },
                "recurring": {
                  "type": "boolean"
                }
              },
              "additionalProperties": false
            }
          },
          "acceptingPatients": {
            "type": "boolean"
          },
          "consultationTypes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "partnerPharmacies": {
            "type": "integer"
          },
          "yearOneClinicFees": {
            "type": [
              "number",
              "null"
            ]
          },
          "laterYearClinicFees": {
            "type": [
              "number",
              "null"
            ]
          },
          "initialConsultationFee": {
            "type": [
              "number",
              "null"
            ]
          },
          "followUpConsultationFee": {
            "type": [
              "number",
              "null"
            ]
          }
        },
        "additionalProperties": false
      }
    },
    "missing": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Slugs with no such listing"
    },
    "pharmacies": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "slug",
          "url",
          "offersDelivery",
          "offersCollection",
          "cheapestDelivery",
          "freeDeliveryOver",
          "gphcNumber",
          "gphcInspectionOutcome",
          "rating",
          "partnerClinics"
        ],
        "properties": {
          "url": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "rating": {
            "anyOf": [
              {
                "type": "object",
                "required": [
                  "average",
                  "count"
                ],
                "properties": {
                  "count": {
                    "type": "number"
                  },
                  "average": {
                    "type": "number"
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "gphcNumber": {
            "type": [
              "string",
              "null"
            ]
          },
          "offersDelivery": {
            "type": "boolean"
          },
          "partnerClinics": {
            "type": "integer"
          },
          "cheapestDelivery": {
            "type": [
              "number",
              "null"
            ]
          },
          "freeDeliveryOver": {
            "type": [
              "number",
              "null"
            ]
          },
          "offersCollection": {
            "type": "boolean"
          },
          "gphcInspectionOutcome": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
compare_providers annotations
{
  "title": "Compare clinics or pharmacies",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
search_findabis — Search everything
Advertised by the server during the last successful anonymous check.
Advertised read-only

One text search across clinics, pharmacies, products, strains, brands and Findabis articles; small misspellings still match. Use it when you do not yet know which kind the question is about, or to turn a name into a slug. Each match carries its kind, slug, page URL and a one-line summary (town, consultation types and first fee for a clinic; delivery and collection for a pharmacy; brand, dose form, THC and CBD for a product; genetics for a strain; country and product count for a brand), enough to say what something is; call the specific tool for more. No stock, per-pharmacy prices or medical information.

search_findabis input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "query"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 20,
      "minimum": 1,
      "description": "Most results per kind, 1-20. Default 8."
    },
    "query": {
      "type": "string",
      "maxLength": 120,
      "minLength": 2,
      "description": "What to look for: a name, brand, strain, town or postcode."
    }
  },
  "additionalProperties": false
}
search_findabis output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "results"
  ],
  "properties": {
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "kind",
          "name",
          "slug",
          "url",
          "summary"
        ],
        "properties": {
          "url": {
            "anyOf": [
              {
                "type": "string",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ],
            "description": "Canonical Findabis page, absolute; null when the listing has no page"
          },
          "kind": {
            "enum": [
              "clinic",
              "pharmacy",
              "product",
              "strain",
              "brand",
              "article"
            ],
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "slug": {
            "type": [
              "string",
              "null"
            ]
          },
          "summary": {
            "type": [
              "string",
              "null"
            ],
            "description": "One line of public facts: town, services, fees, dose form, strength, genetics or country"
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
search_findabis annotations
{
  "title": "Search everything",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_directory_facts — Directory facts and counts
Advertised by the server during the last successful anonymous check.
Advertised read-only

Live figures for the whole UK directory: how many clinics, pharmacies, products, strains and brands Findabis lists; the range and median of the first-consultation fees clinics publish; how many pharmacies deliver or offer collection; and when each directory last changed. Use it for 'how many', 'what does a first consultation typically cost', 'what does Findabis cover', and to cite a figure with its date. Takes no input. Aggregates only: it names no provider and holds no stock or medicine prices. For the listings themselves, use the find_ tools.

get_directory_facts input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
get_directory_facts output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "asOf",
    "country",
    "clinics",
    "pharmacies",
    "products",
    "strains",
    "brands",
    "note"
  ],
  "properties": {
    "asOf": {
      "type": "string",
      "description": "The day these figures were read, YYYY-MM-DD"
    },
    "note": {
      "type": "string"
    },
    "brands": {
      "type": "object",
      "required": [
        "count",
        "url"
      ],
      "properties": {
        "url": {
          "type": "string",
          "format": "uri",
          "description": "The directory page, absolute"
        },
        "count": {
          "type": "integer",
          "description": "Listings in the UK directory right now"
        }
      },
      "additionalProperties": false
    },
    "clinics": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "count",
            "url",
            "firstConsultationFee",
            "updatedAt"
          ],
          "properties": {
            "url": {
              "type": "string",
              "format": "uri",
              "description": "The directory page, absolute"
            },
            "count": {
              "type": "integer",
              "description": "Listings in the UK directory right now"
            },
            "updatedAt": {
              "type": [
                "string",
                "null"
              ],
              "description": "When a listed clinic last changed its listing"
            },
            "firstConsultationFee": {
              "anyOf": [
                {
                  "type": "object",
                  "required": [
                    "min",
                    "max",
                    "median",
                    "stated"
                  ],
                  "properties": {
                    "max": {
                      "type": "number"
                    },
                    "min": {
                      "type": "number"
                    },
                    "median": {
                      "type": "number"
                    },
                    "stated": {
                      "type": "integer"
                    }
                  },
                  "additionalProperties": false
                },
                {
                  "type": "null"
                }
              ],
              "description": "Published first-consultation fees in GBP across the clinics that state one; null when none does"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "country": {
      "type": "string",
      "const": "GB"
    },
    "strains": {
      "type": "object",
      "required": [
        "count",
        "url"
      ],
      "properties": {
        "url": {
          "type": "string",
          "format": "uri",
          "description": "The directory page, absolute"
        },
        "count": {
          "type": "integer",
          "description": "Listings in the UK directory right now"
        }
      },
      "additionalProperties": false
    },
    "products": {
      "type": "object",
      "required": [
        "count",
        "url"
      ],
      "properties": {
        "url": {
          "type": "string",
          "format": "uri",
          "description": "The directory page, absolute"
        },
        "count": {
          "type": "integer",
          "description": "Listings in the UK directory right now"
        }
      },
      "additionalProperties": false
    },
    "pharmacies": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "count",
            "url",
            "delivery",
            "collection",
            "updatedAt"
          ],
          "properties": {
            "url": {
              "type": "string",
              "format": "uri",
              "description": "The directory page, absolute"
            },
            "count": {
              "type": "integer",
              "description": "Listings in the UK directory right now"
            },
            "delivery": {
              "type": "integer",
              "description": "How many deliver"
            },
            "updatedAt": {
              "type": [
                "string",
                "null"
              ],
              "description": "When a listed pharmacy last changed its listing"
            },
            "collection": {
              "type": "integer",
              "description": "How many offer in-person collection"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false
}
get_directory_facts annotations
{
  "title": "Directory facts and counts",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

3 advertised

find_care_near — Find care near a place

Advertised by the server during the last successful anonymous check.

Clinics and dispensing pharmacies near a UK town or postcode, with Findabis page links. Takes only a place.

place
A UK town, city or postcode, e.g. "Leeds" or "M1 1AE". (required)
product_facts — Facts about one product

Advertised by the server during the last successful anonymous check.

What Findabis publishes about one cannabis-based medicine: form, strength, strain, contents, leaflets and page link. Describes, never recommends. Takes only a product name.

product
The name as written on Findabis, or close to it. (required)
check_provider — Check a clinic or pharmacy

Advertised by the server during the last successful anonymous check.

Whether a clinic or pharmacy is listed on Findabis and its public record: CQC or GPhC registration, inspection outcome, fees or delivery, page and regulator links. Takes only a name.

name
The name as written on Findabis, or close to it. (required)

Resources

3 advertised

how-to-get-a-prescription — How to get a medical cannabis prescription in the UK

Advertised by the server during the last successful anonymous check.

The legal position and the usual route: clinic, records, specialist, pharmacy. General, not advice.

how-to-get-a-prescription URI
findabis://guide/how-to-get-a-prescription

MIME type: text/markdown

eligibility — Who can be prescribed medical cannabis in the UK

Advertised by the server during the last successful anonymous check.

What clinics commonly look for and what they publish. It assesses no one; only a specialist decides.

eligibility URI
findabis://guide/eligibility

MIME type: text/markdown

disclaimer — About Findabis and its data

Advertised by the server during the last successful anonymous check.

What Findabis is, the medical disclaimer, and the rules for answering from this data.

disclaimer URI
findabis://disclaimer

MIME type: text/markdown

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (2 of 2 answered).

  1. 2026-11-06: 1 of 1 checks answered
  2. 2026-11-07: 1 of 1 checks answered

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
2060 ms
95th percentile latency
2060 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 2060 ms · metadata changed · 10 tool(s), 3 resource(s), 0 resource template(s), 3 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http findabis-mcp https://findabis.com/api/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add findabis-mcp --url https://findabis.com/api/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable findabis-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "findabis-mcp": {
      "url": "https://findabis.com/api/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "findabis-mcp": {
      "type": "streamableHttp",
      "url": "https://findabis.com/api/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start findabis-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "findabis-mcp": {
      "type": "http",
      "url": "https://findabis.com/api/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http findabis-mcp https://findabis.com/api/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://findabis.com/api/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "findabis-mcp": {
      "serverUrl": "https://findabis.com/api/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Findabis MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Findabis 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.

Claim this listing