Skip to main content
Glama

List Classes

list_classes
Read-onlyIdempotent

List pharmacologic drug-class reference entries from DailyMed, optionally filtered by class_code or class type (EPC = established pharmacologic class, MoA = mechanism of action, PE = physiologic effect, CS = chemical structure). Returns class codes and display names. ~1,210 classes total, 100 per page.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageNo1-based page (100 per page, ~13 pages). Ignored when class_code is given.
typeNoEPC | MoA | PE | CS
class_codeNoRestrict to a specific class code. NLM RxClass format, e.g. "N0000175809" — not a UMLS CUI.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataNo
metadataNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedOutput schema / properties / data
      Added value: +{
      +  "items": {
      +    "properties": {
      +      "code": {
      +        "type": "string"
      +      },
      +      "codingSystem": {
      +        "type": "string"
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "type": "string"
      +      }
      +    },
      +    "type": [
      +      "object",
      +      null
      +    ]
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / metadata
      Added value: +{
      +  "properties": {
      +    "current_page": {
      +      "type": "number"
      +    },
      +    "current_url": {
      +      "type": "string"
      +    },
      +    "db_published_date": {
      +      "type": "string"
      +    },
      +    "elements_per_page": {
      +      "type": "number"
      +    },
      +    "matched_by": {
      +      "type": "string"
      +    },
      +    "next_page": {
      +      "type": "number"
      +    },
      +    "next_page_url": {
      +      "type": "string"
      +    },
      +    "note": {
      +      "type": "string"
      +    },
      +    "previous_page": {
      +      "type": "string"
      +    },
      +    "previous_page_url": {
      +      "type": "string"
      +    },
      +    "total_elements": {
      +      "type": "number"
      +    },
      +    "total_pages": {
      +      "type": "number"
      +    }
      +  },
      +  "type": "object"
      +}
    • removedOutput schema / properties / results
      Removed value: -{
      -  "description": "List of drug classes",
      -  "items": {
      -    "properties": {
      -      "classCode": {
      -        "description": "Unique class code",
      -        "type": "string"
      -      },
      -      "className": {
      -        "description": "Class name or description",
      -        "type": "string"
      -      },
      -      "drugs": {
      -        "description": "Drugs in this class",
      -        "items": {
      -          "properties": {
      -            "name": {
      -              "description": "Drug name",
      -              "type": "string"
      -            },
      -            "setId": {
      -              "description": "DailyMed identifier",
      -              "type": "string"
      -            }
      -          },
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "type": {
      -        "description": "Class type (EPC, MoA, PE, or CS)",
      -        "enum": [
      -          "EPC",
      -          "MoA",
      -          "PE",
      -          "CS"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "type": "object"
      -  },
      -  "type": "array"
      -}
    • removedOutput schema / properties / totalResults
      Removed value: -{
      -  "description": "Total number of classes",
      -  "type": "number"
      -}
  2. Changed2 schema fields changed
    • changedInput schema / properties / class_code / description
      Previous value: -"Restrict to a specific class code"New value: +"Restrict to a specific class code. NLM RxClass format, e.g. \"N0000175809\" — not a UMLS CUI."
    • addedInput schema / properties / page
      Added value: +{
      +  "description": "1-based page (100 per page, ~13 pages). Ignored when class_code is given.",
      +  "type": "number"
      +}
  3. Changed2 schema fields changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "type": "MoA"
      +  },
      +  {
      +    "class_code": "C0001",
      +    "type": "EPC"
      +  }
      +]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "description": "Pharmacologic or drug-class reference",
      +  "properties": {
      +    "results": {
      +      "description": "List of drug classes",
      +      "items": {
      +        "properties": {
      +          "classCode": {
      +            "description": "Unique class code",
      +            "type": "string"
      +          },
      +          "className": {
      +            "description": "Class name or description",
      +            "type": "string"
      +          },
      +          "drugs": {
      +            "description": "Drugs in this class",
      +            "items": {
      +              "properties": {
      +                "name": {
      +                  "description": "Drug name",
      +                  "type": "string"
      +                },
      +                "setId": {
      +                  "description": "DailyMed identifier",
      +                  "type": "string"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "type": {
      +            "description": "Class type (EPC, MoA, PE, or CS)",
      +            "enum": [
      +              "EPC",
      +              "MoA",
      +              "PE",
      +              "CS"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "totalResults": {
      +      "description": "Total number of classes",
      +      "type": "number"
      +    }
      +  },
      +  "type": "object"
      +}
  4. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive behavior, so the bar is lower. The description adds meaningful context beyond annotations: the DailyMed source, the returned fields (class codes and display names), and pagination behavior (~1,210 classes, 100 per page). No contradictions with annotations.

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

Conciseness5/5

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

Three concise sentences cover purpose, filters, output, and pagination with no wasted words. The core action is front-loaded and the detail is organized logically.

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?

Given the read-only annotations, a fully described parameter schema, and an output schema, the description is complete enough for an agent to select and invoke the tool correctly. It adds the only missing context: data source granularity, type-code meanings, and page sizing.

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%, providing a baseline of 3. The description adds value by defining the type abbreviations (EPC, MoA, PE, CS), explaining that class_code filters results, and describing the output fields. This goes beyond what the schema alone conveys.

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?

The description uses a specific verb ('List'), names the resource ('pharmacologic drug-class reference entries from DailyMed'), and specifies the key filters and return values. This clearly distinguishes it from drug-label and search-oriented siblings like get_drug and search_drugs.

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

Usage Guidelines3/5

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

The description implies the tool is for retrieving drug-class reference entries, and defines the class type filter values. However, it does not explicitly state when to prefer this tool over siblings such as search_drugs or list_labels_for_drug_name, nor does it mention any exclusions.

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.