Skip to main content
Glama

Is major therapeutic interest

is_major_therapeutic_interest
Read-onlyIdempotent

Whether a medicine, given exactly one of its CIS code or its name, is on the BDPM list of medicines of major therapeutic interest (MITM), with its ATC code. A name whose matches all have the same MITM status and ATC code gets one answer for all of them; otherwise ranked candidates with their total, holder, marketing, shortage and MITM status and ATC code; a misspelled name gets a spelling suggestion. Information only: never use this to recommend a substitute, an alternative or an equivalent medicine, a dosage change or stopping a treatment. Other medicines in the results are not alternatives.

Input Schema

NameRequiredDescriptionDefault
cisNo8-digit BDPM medicine code (CIS).
nameNoMedicine name; resolved to one CIS or a list of candidates.

Output Schema

NameRequiredDescriptionDefault
dataYes
safetyYes
sourceYes
warningNo
disclaimerYes
coverage_noteYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / data / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "atc_code": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "cis": {
      -        "pattern": "^\\d{8}$",
      -        "type": "string"
      -      },
      -      "is_mitm": {
      -        "type": "boolean"
      -      },
      -      "kind": {
      -        "const": "mitm",
      -        "type": "string"
      -      },
      -      "name": {
      -        "type": "string"
      -      },
      -      "source": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "cis",
      -      "name",
      -      "is_mitm",
      -      "atc_code",
      -      "source"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "candidates": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "cis": {
      -              "pattern": "^\\d{8}$",
      -              "type": "string"
      -            },
      -            "holder": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "marketing_status": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "name": {
      -              "type": "string"
      -            },
      -            "shortage_status": {
      -              "anyOf": [
      -                {
      -                  "enum": [
      -                    "rupture",
      -                    "tension",
      -                    "arret_commercialisation",
      -                    "remise_a_disposition",
      -                    "autre"
      -                  ],
      -                  "type": "string"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            }
      -          },
      -          "required": [
      -            "cis",
      -            "name",
      -            "holder",
      -            "marketing_status",
      -            "shortage_status"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "capped": {
      -        "type": "boolean"
      -      },
      -      "kind": {
      -        "const": "candidates",
      -        "type": "string"
      -      },
      -      "total": {
      -        "maximum": 9007199254740991,
      -        "minimum": 0,
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "total",
      -      "capped",
      -      "candidates"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "did_you_mean": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "kind": {
      -        "const": "not_found",
      -        "type": "string"
      -      },
      -      "possibly_related_shortages": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "ansm_updated_at": {
      -              "anyOf": [
      -                {
      -                  "format": "date",
      -                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                  "type": "string"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "ansm_url": {
      -              "format": "uri",
      -              "type": "string"
      -            },
      -            "dci": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "expected_return": {
      -              "additionalProperties": false,
      -              "properties": {
      -                "earliest": {
      -                  "anyOf": [
      -                    {
      -                      "format": "date",
      -                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                      "type": "string"
      -                    },
      -                    {
      -                      "type": "null"
      -                    }
      -                  ]
      -                },
      -                "latest": {
      -                  "anyOf": [
      -                    {
      -                      "format": "date",
      -                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                      "type": "string"
      -                    },
      -                    {
      -                      "type": "null"
      -                    }
      -                  ]
      -                },
      -                "part": {
      -                  "anyOf": [
      -                    {
      -                      "enum": [
      -                        "debut",
      -                        "mi",
      -                        "fin"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    {
      -                      "type": "null"
      -                    }
      -                  ]
      -                },
      -                "passed": {
      -                  "type": "boolean"
      -                },
      -                "precision": {
      -                  "anyOf": [
      -                    {
      -                      "enum": [
      -                        "day",
      -                        "month",
      -                        "quarter",
      -                        "year"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    {
      -                      "type": "null"
      -                    }
      -                  ]
      -                },
      -                "raw": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                }
      -              },
      -              "required": [
      -                "earliest",
      -                "latest",
      -                "precision",
      -                "part",
      -                "raw",
      -                "passed"
      -              ],
      -              "type": "object"
      -            },
      -            "match_confidence": {
      -              "type": [
      -                "number",
      -                "null"
      -              ]
      -            },
      -            "match_note": {
      -              "const": "probable match",
      -              "type": "string"
      -            },
      -            "name": {
      -              "type": "string"
      -            },
      -            "returned_at": {
      -              "anyOf": [
      -                {
      -                  "format": "date",
      -                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                  "type": "string"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "scope": {
      -              "enum": [
      -                "ville",
      -                "hopital",
      -                "ville_hopital",
      -                "inconnu"
      -              ],
      -              "type": "string"
      -            },
      -            "scope_raw": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "shortage_id": {
      -              "type": "string"
      -            },
      -            "status": {
      -              "enum": [
      -                "rupture",
      -                "tension",
      -                "arret_commercialisation",
      -                "remise_a_disposition",
      -                "autre"
      -              ],
      -              "type": "string"
      -            },
      -            "status_label_fr": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "shortage_id",
      -            "name",
      -            "dci",
      -            "status",
      -            "status_label_fr",
      -            "scope",
      -            "scope_raw",
      -            "expected_return",
      -            "returned_at",
      -            "ansm_updated_at",
      -            "ansm_url",
      -            "match_confidence"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "possibly_related_shortages",
      -      "did_you_mean"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "atc_code": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "cis": {
      +        "pattern": "^\\d{8}$",
      +        "type": "string"
      +      },
      +      "is_mitm": {
      +        "type": "boolean"
      +      },
      +      "kind": {
      +        "const": "mitm",
      +        "type": "string"
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "source": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "cis",
      +      "name",
      +      "is_mitm",
      +      "atc_code",
      +      "source"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "atc_code": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "is_mitm": {
      +        "type": "boolean"
      +      },
      +      "kind": {
      +        "const": "aggregated",
      +        "type": "string"
      +      },
      +      "medicines": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "cis": {
      +              "pattern": "^\\d{8}$",
      +              "type": "string"
      +            },
      +            "name": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "cis",
      +            "name"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "query": {
      +        "type": "string"
      +      },
      +      "source": {
      +        "type": "string"
      +      },
      +      "total": {
      +        "maximum": 9007199254740991,
      +        "minimum": 0,
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "query",
      +      "total",
      +      "is_mitm",
      +      "atc_code",
      +      "medicines",
      +      "source"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "candidates": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "atc_code": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "cis": {
      +              "pattern": "^\\d{8}$",
      +              "type": "string"
      +            },
      +            "holder": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "is_mitm": {
      +              "type": "boolean"
      +            },
      +            "marketing_status": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "name": {
      +              "type": "string"
      +            },
      +            "shortage_status": {
      +              "anyOf": [
      +                {
      +                  "enum": [
      +                    "rupture",
      +                    "tension",
      +                    "arret_commercialisation",
      +                    "remise_a_disposition",
      +                    "autre"
      +                  ],
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            }
      +          },
      +          "required": [
      +            "cis",
      +            "name",
      +            "holder",
      +            "marketing_status",
      +            "shortage_status",
      +            "is_mitm",
      +            "atc_code"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "capped": {
      +        "type": "boolean"
      +      },
      +      "kind": {
      +        "const": "candidates",
      +        "type": "string"
      +      },
      +      "total": {
      +        "maximum": 9007199254740991,
      +        "minimum": 0,
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "total",
      +      "capped",
      +      "candidates"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "did_you_mean": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "kind": {
      +        "const": "not_found",
      +        "type": "string"
      +      },
      +      "possibly_related_shortages": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "ansm_updated_at": {
      +              "anyOf": [
      +                {
      +                  "format": "date",
      +                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "ansm_url": {
      +              "format": "uri",
      +              "type": "string"
      +            },
      +            "dci": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "expected_return": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "earliest": {
      +                  "anyOf": [
      +                    {
      +                      "format": "date",
      +                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                      "type": "string"
      +                    },
      +                    {
      +                      "type": "null"
      +                    }
      +                  ]
      +                },
      +                "latest": {
      +                  "anyOf": [
      +                    {
      +                      "format": "date",
      +                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                      "type": "string"
      +                    },
      +                    {
      +                      "type": "null"
      +                    }
      +                  ]
      +                },
      +                "part": {
      +                  "anyOf": [
      +                    {
      +                      "enum": [
      +                        "debut",
      +                        "mi",
      +                        "fin"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    {
      +                      "type": "null"
      +                    }
      +                  ]
      +                },
      +                "passed": {
      +                  "type": "boolean"
      +                },
      +                "precision": {
      +                  "anyOf": [
      +                    {
      +                      "enum": [
      +                        "day",
      +                        "month",
      +                        "quarter",
      +                        "year"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    {
      +                      "type": "null"
      +                    }
      +                  ]
      +                },
      +                "raw": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                }
      +              },
      +              "required": [
      +                "earliest",
      +                "latest",
      +                "precision",
      +                "part",
      +                "raw",
      +                "passed"
      +              ],
      +              "type": "object"
      +            },
      +            "match_confidence": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "match_note": {
      +              "const": "probable match",
      +              "type": "string"
      +            },
      +            "name": {
      +              "type": "string"
      +            },
      +            "returned_at": {
      +              "anyOf": [
      +                {
      +                  "format": "date",
      +                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "scope": {
      +              "enum": [
      +                "ville",
      +                "hopital",
      +                "ville_hopital",
      +                "inconnu"
      +              ],
      +              "type": "string"
      +            },
      +            "scope_raw": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "shortage_id": {
      +              "type": "string"
      +            },
      +            "status": {
      +              "enum": [
      +                "rupture",
      +                "tension",
      +                "arret_commercialisation",
      +                "remise_a_disposition",
      +                "autre"
      +              ],
      +              "type": "string"
      +            },
      +            "status_label_fr": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "shortage_id",
      +            "name",
      +            "dci",
      +            "status",
      +            "status_label_fr",
      +            "scope",
      +            "scope_raw",
      +            "expected_return",
      +            "returned_at",
      +            "ansm_updated_at",
      +            "ansm_url",
      +            "match_confidence"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "possibly_related_shortages",
      +      "did_you_mean"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Changed1 schema field changed
    • changedOutput schema / properties / data / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "atc_code": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "cis": {
      -        "pattern": "^\\d{8}$",
      -        "type": "string"
      -      },
      -      "is_mitm": {
      -        "type": "boolean"
      -      },
      -      "kind": {
      -        "const": "mitm",
      -        "type": "string"
      -      },
      -      "name": {
      -        "type": "string"
      -      },
      -      "source": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "cis",
      -      "name",
      -      "is_mitm",
      -      "atc_code",
      -      "source"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "candidates": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "cis": {
      -              "pattern": "^\\d{8}$",
      -              "type": "string"
      -            },
      -            "name": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "cis",
      -            "name"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "kind": {
      -        "const": "candidates",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "candidates"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "not_found",
      -        "type": "string"
      -      },
      -      "possibly_related_shortages": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "ansm_updated_at": {
      -              "anyOf": [
      -                {
      -                  "format": "date",
      -                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                  "type": "string"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "ansm_url": {
      -              "format": "uri",
      -              "type": "string"
      -            },
      -            "dci": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "expected_return": {
      -              "additionalProperties": false,
      -              "properties": {
      -                "earliest": {
      -                  "anyOf": [
      -                    {
      -                      "format": "date",
      -                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                      "type": "string"
      -                    },
      -                    {
      -                      "type": "null"
      -                    }
      -                  ]
      -                },
      -                "latest": {
      -                  "anyOf": [
      -                    {
      -                      "format": "date",
      -                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                      "type": "string"
      -                    },
      -                    {
      -                      "type": "null"
      -                    }
      -                  ]
      -                },
      -                "part": {
      -                  "anyOf": [
      -                    {
      -                      "enum": [
      -                        "debut",
      -                        "mi",
      -                        "fin"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    {
      -                      "type": "null"
      -                    }
      -                  ]
      -                },
      -                "passed": {
      -                  "type": "boolean"
      -                },
      -                "precision": {
      -                  "anyOf": [
      -                    {
      -                      "enum": [
      -                        "day",
      -                        "month",
      -                        "quarter",
      -                        "year"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    {
      -                      "type": "null"
      -                    }
      -                  ]
      -                },
      -                "raw": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                }
      -              },
      -              "required": [
      -                "earliest",
      -                "latest",
      -                "precision",
      -                "part",
      -                "raw",
      -                "passed"
      -              ],
      -              "type": "object"
      -            },
      -            "match_confidence": {
      -              "type": [
      -                "number",
      -                "null"
      -              ]
      -            },
      -            "match_note": {
      -              "const": "probable match",
      -              "type": "string"
      -            },
      -            "name": {
      -              "type": "string"
      -            },
      -            "returned_at": {
      -              "anyOf": [
      -                {
      -                  "format": "date",
      -                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                  "type": "string"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "scope": {
      -              "enum": [
      -                "ville",
      -                "hopital",
      -                "ville_hopital",
      -                "inconnu"
      -              ],
      -              "type": "string"
      -            },
      -            "scope_raw": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "shortage_id": {
      -              "type": "string"
      -            },
      -            "status": {
      -              "enum": [
      -                "rupture",
      -                "tension",
      -                "arret_commercialisation",
      -                "remise_a_disposition",
      -                "autre"
      -              ],
      -              "type": "string"
      -            },
      -            "status_label_fr": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "shortage_id",
      -            "name",
      -            "dci",
      -            "status",
      -            "status_label_fr",
      -            "scope",
      -            "scope_raw",
      -            "expected_return",
      -            "returned_at",
      -            "ansm_updated_at",
      -            "ansm_url",
      -            "match_confidence"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "possibly_related_shortages"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "atc_code": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "cis": {
      +        "pattern": "^\\d{8}$",
      +        "type": "string"
      +      },
      +      "is_mitm": {
      +        "type": "boolean"
      +      },
      +      "kind": {
      +        "const": "mitm",
      +        "type": "string"
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "source": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "cis",
      +      "name",
      +      "is_mitm",
      +      "atc_code",
      +      "source"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "candidates": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "cis": {
      +              "pattern": "^\\d{8}$",
      +              "type": "string"
      +            },
      +            "holder": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "marketing_status": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "name": {
      +              "type": "string"
      +            },
      +            "shortage_status": {
      +              "anyOf": [
      +                {
      +                  "enum": [
      +                    "rupture",
      +                    "tension",
      +                    "arret_commercialisation",
      +                    "remise_a_disposition",
      +                    "autre"
      +                  ],
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            }
      +          },
      +          "required": [
      +            "cis",
      +            "name",
      +            "holder",
      +            "marketing_status",
      +            "shortage_status"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "capped": {
      +        "type": "boolean"
      +      },
      +      "kind": {
      +        "const": "candidates",
      +        "type": "string"
      +      },
      +      "total": {
      +        "maximum": 9007199254740991,
      +        "minimum": 0,
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "total",
      +      "capped",
      +      "candidates"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "did_you_mean": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "kind": {
      +        "const": "not_found",
      +        "type": "string"
      +      },
      +      "possibly_related_shortages": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "ansm_updated_at": {
      +              "anyOf": [
      +                {
      +                  "format": "date",
      +                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "ansm_url": {
      +              "format": "uri",
      +              "type": "string"
      +            },
      +            "dci": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "expected_return": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "earliest": {
      +                  "anyOf": [
      +                    {
      +                      "format": "date",
      +                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                      "type": "string"
      +                    },
      +                    {
      +                      "type": "null"
      +                    }
      +                  ]
      +                },
      +                "latest": {
      +                  "anyOf": [
      +                    {
      +                      "format": "date",
      +                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                      "type": "string"
      +                    },
      +                    {
      +                      "type": "null"
      +                    }
      +                  ]
      +                },
      +                "part": {
      +                  "anyOf": [
      +                    {
      +                      "enum": [
      +                        "debut",
      +                        "mi",
      +                        "fin"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    {
      +                      "type": "null"
      +                    }
      +                  ]
      +                },
      +                "passed": {
      +                  "type": "boolean"
      +                },
      +                "precision": {
      +                  "anyOf": [
      +                    {
      +                      "enum": [
      +                        "day",
      +                        "month",
      +                        "quarter",
      +                        "year"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    {
      +                      "type": "null"
      +                    }
      +                  ]
      +                },
      +                "raw": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                }
      +              },
      +              "required": [
      +                "earliest",
      +                "latest",
      +                "precision",
      +                "part",
      +                "raw",
      +                "passed"
      +              ],
      +              "type": "object"
      +            },
      +            "match_confidence": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "match_note": {
      +              "const": "probable match",
      +              "type": "string"
      +            },
      +            "name": {
      +              "type": "string"
      +            },
      +            "returned_at": {
      +              "anyOf": [
      +                {
      +                  "format": "date",
      +                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "scope": {
      +              "enum": [
      +                "ville",
      +                "hopital",
      +                "ville_hopital",
      +                "inconnu"
      +              ],
      +              "type": "string"
      +            },
      +            "scope_raw": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "shortage_id": {
      +              "type": "string"
      +            },
      +            "status": {
      +              "enum": [
      +                "rupture",
      +                "tension",
      +                "arret_commercialisation",
      +                "remise_a_disposition",
      +                "autre"
      +              ],
      +              "type": "string"
      +            },
      +            "status_label_fr": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "shortage_id",
      +            "name",
      +            "dci",
      +            "status",
      +            "status_label_fr",
      +            "scope",
      +            "scope_raw",
      +            "expected_return",
      +            "returned_at",
      +            "ansm_updated_at",
      +            "ansm_url",
      +            "match_confidence"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "possibly_related_shortages",
      +      "did_you_mean"
      +    ],
      +    "type": "object"
      +  }
      +]
  3. Changed2 schema fields changed
    • addedOutput schema / properties / source / properties / bdpm_imported_at
      Added value: +{
      +  "anyOf": [
      +    {
      +      "format": "date-time",
      +      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • changedOutput schema / properties / source / required
      Previous value: -[
      -  "ansm",
      -  "bdpm",
      -  "ansm_last_ingest",
      -  "bdpm_release"
      -]New value: +[
      +  "ansm",
      +  "bdpm",
      +  "ansm_last_ingest",
      +  "bdpm_release",
      +  "bdpm_imported_at"
      +]
  4. First observed

TDQS

A4.4/5.0
Behavior5/5

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

Annotations only cover the safety profile (read-only, idempotent, non-destructive, closed world); the description goes well beyond by disclosing the resolution logic: a homogeneous name collapses to one answer, otherwise ranked candidates are returned with total, holder, marketing, shortage and MITM status, and misspellings yield a spelling suggestion. It also pre-empts a dangerous misreading of the candidate list ('Other medicines in the results are not alternatives').

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

Conciseness3/5

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

The purpose is front-loaded, but the middle is a long semicolon-chained clause describing the three response shapes that is hard to parse on first read. No filler words, yet the sentence structure could be broken into distinct statements without losing content.

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

Completeness4/5

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

An output schema exists, so the description's recap of returned fields is partly redundant, but the safety constraint and the 'not alternatives' warning are essential context an output schema cannot convey. The only real gap is the behavior when zero or two identifiers are passed, which the 'exactly one' phrasing implies but never states.

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

Parameters4/5

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

Schema coverage is 100%, so the CIS pattern and name length bounds are already documented. The description adds something the schema cannot express: the two parameters are mutually exclusive, exactly one must be supplied. It does not say what happens if both or neither are provided.

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 predicate: whether a medicine, identified by exactly one of its CIS code or name, appears on the BDPM list of medicines of major therapeutic interest (MITM), returning the ATC code. That is concrete enough to distinguish it from search_medicine and get_medicine_info, which retrieve records rather than answer a membership question.

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?

Gives a hard input constraint ('given exactly one of its CIS code or its name') and an explicit when-not: never to recommend a substitute, alternative, equivalent, dosage change or treatment stop. It does not name a sibling to use instead when the agent actually wants full medicine details, so routing against get_medicine_info/search_medicine is left implicit.

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.