Skip to main content
Glama

Get one product in full

get_product
Read-onlyIdempotent

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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
slugYesThe product page slug from find_products or search_findabis, e.g. "demo-kush-t20-c1".

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
cbdYes
thcYes
urlYes
faqsYes
formYesDose form as the page labels it, e.g. "Dried flower"
nameYes
slugYes
brandYes
imageYes
dosageYes
strainYes
storageYes
categoryYes
terpenesYes
withheldYes
allergensYes
chemotypeYesTHC-dominant, CBD-dominant or balanced, from the cannabinoid figures
documentsYes
carrierOilYes
priceRangeYesLowest to highest current price across UK pharmacies, naming none; null when not published
descriptionYes
capsuleShellYes
discontinuedYes
oilFlowerEquivalenceYes
descriptionAiAssistedYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / slug / description
      Previous value: -"The product page slug, e.g. \"demo-kush-t20-c1\"."New value: +"The product page slug from find_products or search_findabis, e.g. \"demo-kush-t20-c1\"."
    • addedInput schema / properties / slug / maxLength
      Added value: +200
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "allergens": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "brand": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "capsuleShell": {
      +      "$ref": "#/properties/brand"
      +    },
      +    "carrierOil": {
      +      "$ref": "#/properties/brand"
      +    },
      +    "category": {
      +      "type": "string"
      +    },
      +    "cbd": {
      +      "$ref": "#/properties/brand"
      +    },
      +    "chemotype": {
      +      "description": "THC-dominant, CBD-dominant or balanced, from the cannabinoid figures",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "description": {
      +      "$ref": "#/properties/brand"
      +    },
      +    "descriptionAiAssisted": {
      +      "type": "boolean"
      +    },
      +    "discontinued": {
      +      "type": "boolean"
      +    },
      +    "documents": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "kind": {
      +            "type": "string"
      +          },
      +          "title": {
      +            "type": "string"
      +          },
      +          "url": {
      +            "anyOf": [
      +              {
      +                "format": "uri",
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "title",
      +          "kind",
      +          "url"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "dosage": {
      +      "$ref": "#/properties/brand"
      +    },
      +    "faqs": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "aiAssisted": {
      +            "type": "boolean"
      +          },
      +          "answer": {
      +            "type": "string"
      +          },
      +          "question": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "question",
      +          "answer",
      +          "aiAssisted"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "form": {
      +      "description": "Dose form as the page labels it, e.g. \"Dried flower\"",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "image": {
      +      "anyOf": [
      +        {
      +          "format": "uri",
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "name": {
      +      "type": "string"
      +    },
      +    "oilFlowerEquivalence": {
      +      "$ref": "#/properties/brand"
      +    },
      +    "priceRange": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": false,
      +          "properties": {
      +            "currency": {
      +              "type": "string"
      +            },
      +            "max": {
      +              "type": "number"
      +            },
      +            "min": {
      +              "type": "number"
      +            }
      +          },
      +          "required": [
      +            "min",
      +            "max",
      +            "currency"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "Lowest to highest current price across UK pharmacies, naming none; null when not published"
      +    },
      +    "slug": {
      +      "type": "string"
      +    },
      +    "storage": {
      +      "$ref": "#/properties/brand"
      +    },
      +    "strain": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": false,
      +          "properties": {
      +            "genetics": {
      +              "$ref": "#/properties/brand"
      +            },
      +            "name": {
      +              "type": "string"
      +            },
      +            "url": {
      +              "anyOf": [
      +                {
      +                  "format": "uri",
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            }
      +          },
      +          "required": [
      +            "name",
      +            "genetics",
      +            "url"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "terpenes": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "name": {
      +            "type": "string"
      +          },
      +          "percent": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "name",
      +          "percent"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "thc": {
      +      "$ref": "#/properties/brand"
      +    },
      +    "url": {
      +      "anyOf": [
      +        {
      +          "format": "uri",
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "withheld": {
      +      "type": "string"
      +    }
      +  },
      +  "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"
      +  ],
      +  "type": "object"
      +}
  2. First observed

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/idempotent annotations by disclosing what is NOT returned (stock, pack sizes, per-pharmacy pricing) and why — those fields are gated to authenticated patients and professionals. The closing scope constraint ('describes the product, never who should take it') is exactly the kind of behavioral boundary an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the resource and scope in the first clause, then spends its remaining sentences on exclusions and boundaries that are genuinely load-bearing. The enumeration of returned fields is somewhat redundant given the output schema, but the prose stays tight and purposeful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not document return values, yet it still conveys the access model, exclusions, and scope limits. Nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single slug parameter already carries its origin and an example, so the schema does the heavy lifting. The description reinforces the slug source but adds no new syntax or format detail beyond it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Everything public about one product') and pins the identifier ('by its slug from find_products or search_findabis'), which cleanly separates it from the search/discovery siblings. An agent knows exactly what it retrieves without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It tells the agent where the required slug comes from (find_products or search_findabis), giving clear preconditions for use. It does not explicitly contrast with the sibling get_listing, so the routing guidance is strong but not complete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources