Skip to main content
Glama
wkurzatz

Health Canada Drug Product Database MCP Server

by wkurzatz

Health Canada Drug Product Database MCP Server

An MCP (Model Context Protocol) server that exposes the Health Canada Drug Product Database (DPD) APIs as tools. Query information on ~47,000 drugs approved for use in Canada including human pharmaceuticals, biologics, veterinary drugs, radiopharmaceuticals, and disinfectants.

Features

  • 15 tools exposing all DPD API endpoints

  • 4 resources providing reference documentation

  • 4 prompts for guided workflows

  • Async HTTP requests with httpx

  • Support for English and French responses

  • JSON and XML response formats

  • Comprehensive drug product queries

Related MCP server: mcp-dailymed

Available Tools

Tool

Description

get_active_ingredients

Get active ingredients for a drug by drug code

search_active_ingredients

Search ingredients by name across all products

get_company

Get company/manufacturer information

get_drug_product

Get drug product by drug code

search_drug_by_din

Search by Drug Identification Number (DIN)

search_drug_by_brand_name

Search by brand name (e.g., "Tylenol")

get_dosage_form

Get dosage forms (tablet, capsule, etc.)

get_packaging

Get package sizes and UPC codes

get_pharmaceutical_standard

Get manufacturing standard

get_route_of_administration

Get administration routes (oral, IV, etc.)

get_schedule

Get drug schedules (prescription, OTC, etc.)

get_product_status

Get product status (marketed, cancelled, etc.)

get_therapeutic_class

Get ATC therapeutic classification

get_veterinary_species

Get approved species for veterinary drugs

get_all_drug_info

Get comprehensive info in one call

Available Resources

Resources provide reference data that agents can read for context:

Resource URI

Description

dpd://documentation/overview

API overview, key identifiers, and typical workflows

dpd://reference/status-codes

Drug status code meanings (Approved, Marketed, Cancelled, etc.)

dpd://reference/schedules

Drug schedule classifications (Prescription, OTC, Narcotic, etc.)

dpd://reference/routes

Routes of administration reference (Oral, IV, Topical, etc.)

Available Prompts

Prompts provide guided workflows for common tasks:

Prompt

Arguments

Description

drug_lookup

drug_name

Comprehensive lookup of a drug by name

compare_drugs

drug1, drug2

Side-by-side comparison of two drugs

find_alternatives

drug_name

Find generic alternatives with same active ingredient

check_din

din

Verify a DIN and get product status/details

Installation

Prerequisites

  • Python 3.11 or higher

  • pip or uv package manager

Quick Start

  1. Clone the repository

    git clone https://github.com/yourusername/PharmacyMCP.git
    cd PharmacyMCP
  2. Create a virtual environment

    Using venv (built-in):

    python -m venv .venv

    Or using uv (faster):

    uv venv .venv
  3. Activate the virtual environment

    Windows (PowerShell):

    .\.venv\Scripts\Activate.ps1

    Windows (Command Prompt):

    .venv\Scripts\activate.bat

    macOS/Linux:

    source .venv/bin/activate
  4. Install dependencies

    Using pip:

    pip install -r requirements.txt

    Or using uv:

    uv pip install -r requirements.txt
  5. Verify installation

    python src/dpd_server.py

    The server will start and listen at http://localhost:8000/mcp. Press Ctrl+C to stop.

Usage

Running the server

python src/dpd_server.py

The server starts on http://localhost:8000/mcp using the MCP Streamable HTTP transport.

Running with FastMCP CLI

fastmcp run src/dpd_server.py

Connecting from Claude Desktop

Start the server first (python src/dpd_server.py), then add to your Claude Desktop configuration (claude_desktop_config.json):

{
  "mcpServers": {
    "pharmacy-dpd": {
      "url": "http://localhost:8000/mcp"
    }
  }
}

Installing in VS Code with GitHub Copilot

Start the server first, then add to your VS Code settings.json:

{
  "github.copilot.chat.mcpServers": {
    "pharmacy-dpd": {
      "url": "http://localhost:8000/mcp"
    }
  }
}

Connecting from Postman

Create a new MCP request in Postman and set the URL to:

http://localhost:8000/mcp

Example Queries

Once connected, you can ask questions like:

  • "Search for drugs with the brand name Tylenol"

  • "What are the active ingredients in drug code 48905?"

  • "Find drugs containing acetaminophen"

  • "What is the status of DIN 00326925?"

  • "Get all information about drug code 2049"

  • "Compare Tylenol and Advil"

  • "Find generic alternatives to Lipitor"

How Agents Use Resources and Prompts

Resources

Agents automatically have access to reference data without making API calls. For example, when interpreting a status code like "4", the agent can read dpd://reference/status-codes to understand it means "Cancelled Post-Market".

Prompts

Prompts guide multi-step workflows. When you ask to look up a drug, the drug_lookup prompt provides a structured approach:

  1. Search by brand name

  2. Get the drug_code from results

  3. Fetch comprehensive details

  4. Present information in a clear format

API Reference

This server wraps the Health Canada DPD API:

  • Base URL: https://health-products.canada.ca/api/drug/

  • Documentation: DPD API Guide

Drug Status Codes

Code

Status

1

Approved

2

Marketed

3

Cancelled Pre Market

4

Cancelled Post Market

6

Dormant

9

Cancelled (Unreturned Annual)

10

Cancelled (Safety Issue)

11

Authorized By Interim Order

12

Authorization By Interim Order Revoked

13

Restricted Access

14

Authorization By Interim Order Expired

15

Cancelled (Transitioned to Biocides)

License

MIT

Available Tools

15 tools
get_active_ingredientsA

Get active ingredient(s) for a drug product.

Active ingredients are components that have medicinal properties and supply pharmacological activity. Returns ingredient name, strength, and dosage information.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoResponse language - "en" for English, "fr" for Frenchen
typeNoResponse format - "json" or "xml"json
drug_codeYesThe drug product code (required)
ingredient_nameNoFilter by ingredient name (e.g., "zinc", "vitamin")

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It explains what active ingredients are and that it returns name, strength, and dosage information, which is useful. However, it does not disclose error behavior, response format details, or explicitly confirm read-only safety beyond the 'get' verb.

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?

The description is highly concise: two sentences, front-loaded with the primary purpose, followed by a brief definitional context. Every sentence earns its place with no redundancy or filler.

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?

Given the output schema, complete parameter descriptions, and read-only nature, the description is largely sufficient. The only gap is not addressing when to choose this over search_active_ingredients, which would help an agent navigate the sibling tools more effectively.

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%, with each parameter (drug_code, lang, type, ingredient_name) already documented. The description adds no parameter-specific semantics beyond the schema; it only reinforces that the tool is for a drug product.

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 clearly states the verb 'Get' and resource 'active ingredient(s) for a drug product,' distinguishing it from search_active_ingredients. It also defines active ingredients and mentions return fields (name, strength, dosage), making the purpose unmistakable.

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 usage for a specific drug product via the required drug_code parameter, but it does not explicitly state when to use this tool versus search_active_ingredients or other siblings. No exclusions or alternatives are mentioned.

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

get_all_drug_infoA

Get comprehensive information about a drug product in a single call.

Fetches all available data for a drug product including: basic product info, active ingredients, company, dosage form, packaging, pharmaceutical standard, route of administration, schedule, status, and therapeutic class.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoResponse language - "en" for English, "fr" for Frenchen
drug_codeYesThe drug product code (required)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It uses read-oriented verbs ('Get', 'Fetches') and lists the exact scope of data returned, which is helpful transparency. However, it omits any mention of side effects, authentication requirements, performance considerations, or behavior under error conditions, which would be valuable for a read operation.

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?

The description consists of two tight sentences: the first gives the primary purpose, the second lists the data categories. It is front-loaded, free of redundancy, and every word contributes to understanding the tool's scope.

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 that an output schema exists (so return formats are externally defined) and the input schema is fully documented, the description is sufficiently complete. It clearly defines the tool's aggregate nature and enumerates all data sections the agent can expect, leaving no ambiguity about its scope.

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?

The input schema already provides complete descriptions for both parameters (drug_code required integer, lang with enum and default). The tool description adds no additional parameter-level detail, so the value is neutral and matches the baseline for high schema coverage.

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 clearly states the tool's function: 'Get comprehensive information about a drug product in a single call' and enumerates all included data categories (basic info, active ingredients, company, etc.). This not only specifies the verb and resource but also distinctly separates it from sibling tools that fetch individual components.

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?

The phrase 'in a single call' implicitly signals this tool is the aggregate alternative to making multiple calls to the listed sibling getters. However, it does not explicitly state 'use this when you need all data' or name alternatives for partial lookups, leaving some room for interpretation.

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

get_companyA

Get company information by company code.

Companies include DIN owners and manufacturers of drug products.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoResponse language - "en" for English, "fr" for Frenchen
typeNoResponse format - "json" or "xml"json
company_codeYesThe company code (required)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the burden. It indicates a read-only retrieval action ('get'), which implies no side effects, but does not disclose output format, error behavior, or any required permissions. The description is minimal and adds little beyond the action itself.

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?

The description is two short sentences, front-loaded with the main action, and includes a useful scope clarification. There is no waste or redundancy.

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?

For a simple lookup tool with well-documented parameters and an output schema, the description is mostly sufficient. It clearly identifies the entity and purpose, though the absence of usage guidance and minimal behavioral detail slightly reduces completeness in a context with many sibling tools.

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?

The schema has 100% parameter coverage with descriptions for all three parameters (company_code, lang, type). The description only repeats that company_code is the lookup key, adding no new semantics for lang or type. Baseline 3 is appropriate given the high schema coverage.

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 states a specific action ('Get company information') and the key identifier ('company code'). It also clarifies the domain by noting companies include DIN owners and manufacturers of drug products, distinguishing it from drug-product-specific tools.

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 usage for company lookups but does not explicitly discuss when to use this tool versus alternatives. The scope sentence helps differentiate from drug product tools, but no exclusions or alternative tool references are provided.

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

get_dosage_formA

Get dosage form(s) for a drug product.

Dosage form is the form of presentation (e.g., tablet, capsule, liquid, powder). A product can have multiple dosage forms when it's a kit.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoResponse language - "en" for English, "fr" for Frenchen
typeNoResponse format - "json" or "xml"json
drug_codeYesThe drug product code (required)
active_onlyNoIf True, returns only active dosage forms

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It adds useful behavioral context by defining dosage form and noting that a product can have multiple forms when it is a kit. However, it does not mention default behaviors of parameters like active_only, return format, or error cases.

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?

The description is two clear sentences. The first sentence states the action and target, the second provides a concise definition and a valuable caveat about kits. No wasted words and information is front-loaded.

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?

Given the tool's simple lookup nature, an output schema exists, and the input schema covers all parameters well, the description is largely complete. It lacks explicit usage guidance relative to siblings, but that is already scored separately. It provides enough context for an agent to understand the tool's role.

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?

The input schema already provides detailed descriptions for all 4 parameters, including enums and defaults (100% coverage). The description does not add parameter-level meaning beyond referencing drug product, so baseline score of 3 is appropriate.

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 specific verb 'Get' plus resource 'dosage form(s) for a drug product'. It also clarifies the domain concept with examples and notes the special case of kits, making it clearly distinct from sibling tools like get_route_of_administration or get_drug_product.

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 this is for retrieving dosage form information for a specific drug product, but it does not explicitly state when to use this tool versus alternatives like get_all_drug_info or get_route_of_administration. No exclusions or alternative guidance is provided.

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

get_drug_productA

Get drug product information by drug code.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoResponse language - "en" for English, "fr" for Frenchen
typeNoResponse format - "json" or "xml"json
drug_codeYesThe drug product code (required)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Get drug product information' and does not state whether this is read-only, whether any permissions are needed, or any limitations. The verb 'Get' hints at non-mutation, but no additional behavioral context is given.

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?

The description is a single, front-loaded sentence that uses no wasted words. It is appropriately concise for a simple lookup tool.

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

Completeness3/5

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

The tool has a full output schema and complete parameter descriptions, so the description only needs to provide the core purpose, which it does. However, it lacks extra context like related tools or special behaviors, making it minimally viable but not exceptional.

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%, so the parameters are already well-described in the schema. The description adds no new parameter-specific meaning, but the baseline of 3 applies because the schema does the heavy lifting.

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 clearly states the action (Get), the resource (drug product information), and the key parameter (by drug code). This distinguishes it from sibling tools that focus on other aspects like active ingredients or companies.

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 usage (when you have a drug code), but it does not explicitly state when to use this tool versus alternatives like search_drug_by_din or search_drug_by_brand_name. There is no mention of exclusions or preferred scenarios.

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

get_packagingB

Get packaging information for a drug product.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoResponse format - "json" or "xml"json
drug_codeYesThe drug product code (required)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only states the action ('Get') and does not describe auth requirements, potential errors, pagination, or any constraints. Although 'Get' implies a read-only operation, the description fails to disclose any behavioral traits beyond that.

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?

A single sentence that is direct and free of fluff. It earns its place by stating exactly what the tool does, without unnecessary elaboration.

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?

Given the simplicity of the tool (2 params, output schema present, no nested objects), the description is adequate for basic usage. However, it misses an opportunity to differentiate among the many siblings by noting e.g., that it returns all packaging levels or that it can be used after getting a drug code.

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 coverage is 100%, with both parameters (drug_code and type) having descriptive text. The description adds no additional meaning about parameters, so the baseline score of 3 is appropriate as the schema already carries the semantic weight.

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 the specific verb 'Get' and the resource 'packaging information' for a 'drug product', making it unambiguous what the tool does. It distinguishes itself from sibling tools by targeting a distinct resource (packaging) rather than active ingredients, companies, or dosage forms.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention any exclusions or alternative tools for related queries (e.g., get_drug_product, get_all_drug_info), leaving agents to infer usage from the name alone.

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

get_pharmaceutical_standardA

Get pharmaceutical standard for a drug product.

The pharmaceutical standard is the standard to which a drug product is manufactured and represented.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoResponse format - "json" or "xml"json
drug_codeYesThe drug product code (required)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only defines 'pharmaceutical standard' and does not mention permissions, error behavior, or response details. The 'get' verb implies read-only, but no explicit safety or side-effect context is given.

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?

The description is concise, two sentences, with the action front-loaded. The second sentence provides useful definitional context without unnecessary fluff, making it appropriately sized and well-structured.

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

Completeness3/5

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

For a simple getter, the description is minimally viable but lacks comprehensive guidance: it does not discuss usage scenarios, behavioral caveats, or response handling, though an output schema exists. The gaps in usage guidelines and transparency keep it from being fully complete.

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?

The input schema already describes both parameters (drug_code and type) with 100% coverage. The description adds no additional parameter-specific meaning beyond clarifying what a pharmaceutical standard is, which indirectly relates to the drug_code parameter but is already evident from the schema.

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 clearly states the tool gets a pharmaceutical standard for a drug product, using a specific verb and resource. This distinguishes it from sibling tools like get_active_ingredients or get_dosage_form, making the purpose unambiguous.

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 used when you need the pharmaceutical standard for a drug product, but it gives no explicit guidance on when to use it versus alternative tools, nor does it mention any exclusions or prerequisites. The context is clear but no alternatives are discussed.

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

get_product_statusA

Get the status of a drug product.

Status types include:

  • Approved: Active DIN authorized for sale but not yet marketed

  • Marketed: Active DIN currently being sold in Canada

  • Dormant: Active DIN previously marketed but sale suspended 12+ months

  • Cancelled Post-Market: DIN cancelled after being marketed

  • Cancelled Pre-Market: DIN cancelled before being marketed

  • Cancelled (Safety Issue): DIN cancelled due to safety concerns

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoResponse language - "en" for English, "fr" for Frenchen
typeNoResponse format - "json" or "xml"json
drug_codeYesThe drug product code (required)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It does not explicitly state that this is a read-only operation or mention any side effects, permissions, or limitations. However, the tool name and read-only nature are implicit, and the status definitions add useful domain context.

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?

The description is concise: one lead sentence plus a bulleted list of status types. It is front-loaded with the core action and uses the list productively to explain domain-specific statuses without unnecessary fluff.

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?

For a simple, read-only lookup tool, this description is sufficient. It explains all status distinctions, which is the key domain knowledge needed to interpret results. Output schema is present, so return value details are handled elsewhere. No significant gaps remain.

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%, so the input schema already explains all parameters (drug_code, lang, type). The description does not add further parameter detail, which is acceptable given the schema's completeness, but it also does not enhance beyond the baseline.

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 clearly states the tool's purpose: 'Get the status of a drug product' and provides a specific enumeration of status types. This distinguishes it from sibling tools like get_drug_product or get_schedule, which focus on other attributes.

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?

The description provides clear context about what the tool does and defines each status type, making it obvious when to use it (whenever product status is needed). However, it does not explicitly contrast with alternatives or state when not to use it, though sibling tool names make the distinction self-evident.

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

get_route_of_administrationA

Get route(s) of administration for a drug product.

Indicates how the product is introduced to the body (e.g., oral, topical, intramuscular, intravenous, rectal). A product can have multiple routes.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoResponse language - "en" for English, "fr" for Frenchen
typeNoResponse format - "json" or "xml"json
drug_codeYesThe drug product code (required)
active_onlyNoIf True, returns only active routes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It usefully notes that a product can have multiple routes, hinting at an array-like response. However, it does not mention the default language/format behavior, presence of active_only filtering, or any error/edge-case behavior. These are not disclosed beyond schema, so a 3 is appropriate.

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?

The description is two sentences: the first states the purpose directly, the second provides a concise definition with examples. Every sentence earns its place, no fluff or redundancy. It is front-loaded and immediately scannable.

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?

This is a low-complexity lookup tool with a full input schema and an output schema available. The description explains the domain, the multiplicity, and the resource, which is sufficient for an agent to select the tool. It does not need to explain return values because the output schema exists. The only minor gap is lack of mention of the active_only option, but that is already in the schema.

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%, so the baseline is 3. The tool description adds domain context (what a route is) and multiplicity, but it does not add parameter-specific semantics beyond what the schema already provides. No parameter is left unexplained by the schema, so the description neither improves nor harms parameter understanding.

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 begins with a specific verb+resource pair: "Get route(s) of administration for a drug product." It uses domain terminology and examples (oral, topical, etc.) to make the resource unmistakable, and the resource is unique among the sibling tools, so it is well-distinguished.

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?

The description clearly implies when to use this tool: whenever route of administration information is needed for a drug product. It does not explicitly name alternatives or exclusions, but the purpose is specific enough that an agent would know it is the right tool for this resource. The sibling list confirms no overlap.

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

get_scheduleA

Get drug schedule(s) for a drug product.

Schedules indicate the regulatory classification according to the Food and Drug Regulations and Controlled Drugs and Substances Act. Examples include:

  • Prescription

  • OTC (over the counter)

  • Schedule G (controlled drugs)

  • Narcotic

  • Schedule D (biological products)

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoResponse language - "en" for English, "fr" for Frenchen
typeNoResponse format - "json" or "xml"json
drug_codeYesThe drug product code (required)
active_onlyNoIf True, returns only active schedules

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not mention response format, error behavior, pagination, or the read-only nature of the operation. It only explains the domain concept of schedules, leaving behavioral transparency largely unaddressed.

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?

The description is concise and well-structured: a clear opening statement, a brief explanatory sentence, and a bulleted list of examples. Every sentence earns its place with no redundancy, and the key action is front-loaded.

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?

For a relatively simple getter with an output schema available, this description provides adequate domain context (what schedules mean) and clarifies the tool's purpose. However, it lacks usage guidance and deeper behavioral details, preventing a perfect completeness score.

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 coverage is 100% with descriptions for all four parameters (lang, type, drug_code, active_only). The description does not elaborate on these parameters but adds useful context about schedule types, which helps interpret results. Baseline 3 is appropriate given high schema coverage.

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 opens with 'Get drug schedule(s) for a drug product', which is a specific verb+resource combination. It clearly distinguishes itself from sibling getters by focusing on regulatory classification, and the examples (Prescription, OTC, Schedule G, etc.) further clarify the exact resource being retrieved.

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 usage when a drug product's regulatory schedule is needed, but it does not explicitly state when to use this tool over alternatives. There are no exclusions or references to sibling tools, so the guidance remains implicit rather than explicit.

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

get_therapeutic_classA

Get the therapeutic class(es) for a drug product.

Therapeutic classification is assigned according to the drug's main therapeutic use, using the Anatomical Therapeutic Chemical (ATC) classification system.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoResponse language - "en" for English, "fr" for Frenchen
typeNoResponse format - "json" or "xml"json
drug_codeYesThe drug product code (required)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It adds helpful context about how classification is assigned (by main therapeutic use, using ATC). However, it does not explicitly state that the operation is read-only or explain the potential for multiple classes beyond the '(es)' in the name. It also does not mention response formats or error conditions, though the output schema may cover some of this.

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?

The description is two sentences, front-loaded with the core purpose. The second sentence adds valuable domain context without any unnecessary verbosity. Every word earns its place.

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?

For a simple lookup tool with an output schema and fully documented parameters, the description is sufficient. It provides the classification method (ATC) and the basis (main therapeutic use). The only minor gap is not explicitly noting the possibility of multiple therapeutic classes or how the lang/type parameters affect the response, but these are present in the schema.

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%, so the schema already fully documents all three parameters (drug_code, lang, type) with their types, enums, and defaults. The description does not add any additional parameter-level detail beyond what the schema provides, so the baseline score of 3 is appropriate.

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 clearly states that the tool retrieves therapeutic class(es) for a drug product and specifies the ATC classification system. This distinguishes it from sibling tools like get_active_ingredients or get_dosage_form, which retrieve different attributes.

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?

The description provides a clear context: use this tool when you need the therapeutic classification of a drug. It does not explicitly exclude alternatives, but the specificity of 'therapeutic class' and the mention of ATC make the intended use clear. No exclusions are stated, but none are necessary for this simple retrieval tool.

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

get_veterinary_speciesA

Get the veterinary species for a veterinary drug product.

Only applicable to veterinary drugs. Returns the animal species the drug is approved for (e.g., dogs, cats, horses, cattle, poultry).

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoResponse language - "en" for English, "fr" for Frenchen
typeNoResponse format - "json" or "xml"json
drug_codeYesThe drug product code (required)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden. It discloses the domain restriction (veterinary only) and the semantic output (approved species), which is meaningful for a simple read-only lookup. It doesn't address edge cases like invalid codes, but that is acceptable for this tool type.

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?

Two concise, front-loaded sentences that state the action and result with no redundancy or filler.

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?

For a simple lookup with full schema coverage and an existing output schema, the description is complete. It could mention behavior for non-veterinary codes or empty results, but these are not critical given the tool's straightforward nature.

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?

The input schema has 100% parameter description coverage with clear definitions for drug_code, lang, and type. The tool description adds little beyond the drug product context, so baseline 3 is appropriate.

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 clearly states the tool's action ('Get'), the specific resource ('veterinary species for a veterinary drug product'), and the return value ('animal species the drug is approved for'), distinguishing it from sibling drug lookup tools.

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?

Provides an explicit scope constraint ('Only applicable to veterinary drugs') that tells the agent when this tool is appropriate. It doesn't name alternative tools for non-veterinary drugs, but the exclusion is clear.

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

search_active_ingredientsA

Search for active ingredients by name across all drug products.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoResponse language - "en" for English, "fr" for Frenchen
typeNoResponse format - "json" or "xml"json
ingredient_nameYesThe ingredient name to search for (e.g., "acetaminophen", "ibuprofen")

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are present, so the description must convey behavioral traits, but it only states the basic search operation. It fails to disclose whether matching is partial or exact, case sensitivity, pagination, rate limits, or what data is returned for each match. This is a notable transparency gap for a read/search tool.

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?

The description is a single, front-loaded sentence that clearly states the action and scope. It contains no redundant or extraneous wording.

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?

For a simple search tool with full parameter coverage, an output schema, and no nested objects, the description is nearly complete. It would benefit from noting behavior like partial matching or result limits, but overall it provides sufficient context for an agent to invoke the tool correctly.

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?

The input schema fully documents all three parameters with descriptions, defaults, and enum values, so the description adds little beyond the schema. The phrase 'by name' aligns with the ingredient_name parameter but does not introduce new semantic information.

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 ('Search') and resource ('active ingredients by name across all drug products'), clearly distinguishing it from sibling tools like search_drug_by_brand_name or get_active_ingredients. The scope 'across all drug products' adds useful precision.

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 searching active ingredient names across all products, but it does not explicitly state when to choose this over alternatives, such as search_drug_by_brand_name or search_drug_by_din. No exclusions or alternative recommendations are provided, so the guidance is only implicit.

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

search_drug_by_brand_nameA

Search for drug products by brand name.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoResponse language - "en" for English, "fr" for Frenchen
typeNoResponse format - "json" or "xml"json
statusNoFilter by product status: 1=Approved, 2=Marketed, 3=Cancelled Pre Market, 4=Cancelled Post Market, 6=Dormant, 9=Cancelled (Unreturned Annual), 10=Cancelled (Safety Issue), 11=Authorized By Interim Order, 12=Authorization By Interim Order Revoked, 13=Restricted Access, 14=Authorization By Interim Order Expired, 15=Cancelled (Transitioned to Biocides)
brand_nameYesThe brand name to search for (e.g., "Tylenol", "Advil")

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the responsibility for disclosing behavior. The verb 'search' implies a read-only operation, but the description adds no other behavioral context such as exact-match behavior, pagination, or permission requirements. It is minimally transparent but not misleading.

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?

The description is a single, front-loaded sentence that states the exact operation and target. Every word is necessary, with no filler or duplication of schema details.

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?

Given the tool's simplicity and the presence of a comprehensive schema and output schema, the description is adequate for an agent to understand the tool's role. It does not explain the default language/format or status filtering, but those are covered by parameter descriptions. Missing a bit of usage context compared to sibling tools, but still sufficient within the larger toolset.

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?

The input schema has 100% coverage with descriptions for all four parameters. The description only reiterates 'brand name', adding no additional meaning or context beyond what the schema already provides. With full schema coverage, a baseline score of 3 is appropriate.

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 'search' and a clear resource 'drug products' with a distinguishing modifier 'by brand name'. This uniquely identifies the tool among siblings like search_drug_by_din and search_active_ingredients, making its purpose unmistakable.

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?

The phrase 'by brand name' provides clear context for when the tool should be used: when the agent has a brand name to search for. However, it does not explicitly contrast with alternative tools or state when not to use it, though the sibling names largely convey those distinctions.

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

search_drug_by_dinA

Search for a drug product by Drug Identification Number (DIN).

The DIN is an 8-digit number assigned by Health Canada to a drug product prior to being marketed in Canada.

ParametersJSON Schema
NameRequiredDescriptionDefault
dinYesThe Drug Identification Number (e.g., "00326925")
langNoResponse language - "en" for English, "fr" for Frenchen
typeNoResponse format - "json" or "xml"json

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only explains what a DIN is, but does not describe the response format, potential errors, or any side effects. Even for a read-only search, the behavior is not explicitly disclosed.

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?

The description is two short sentences, front-loaded with the primary purpose and followed by a concise explanation of the identifier. Every sentence serves a purpose with no wasted words.

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?

Given the tool's simplicity, the full parameter documentation, and the presence of an output schema, the description is largely complete. It could benefit from explicit guidance on when to use this over sibling tools, but that gap is minor.

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?

The schema covers 100% of parameters, but the description adds meaningful context for the 'din' parameter by explaining that it is an 8-digit number assigned by Health Canada. This goes beyond the schema's example and provides useful domain knowledge.

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 states a specific verb and resource: 'Search for a drug product by Drug Identification Number (DIN)'. This clearly distinguishes it from the sibling search_drug_by_brand_name, which searches by a different identifier.

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 this tool should be used when you have a DIN, not a brand name, but it does not explicitly mention alternatives or provide when-not-to-use guidance. The context is clear but exclusions are absent.

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

TDQS

A4/5.0
Disambiguation5/5

Each tool targets a distinct resource or attribute (e.g., active ingredients, company, dosage form, packaging). Getter and search functions are clearly separated, with no overlapping purposes. The only potential overlap between `get_drug_product` and `get_all_drug_info` is resolved by explicit descriptions of basic vs. comprehensive info.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern: `get_<attribute>` or `search_<entity>`. The getters are uniformly prefixed with `get_`, and the search tools with `search_`. No mixed conventions or vague verbs.

Tool Count5/5

At 15 tools, the set sits at the upper boundary of an appropriately scoped server. Each getter addresses a specific drug product attribute, and `get_all_drug_info` provides a useful aggregate. There is no redundancy or unnecessary expansion.

Completeness4/5

The server covers all major drug product attributes, including active ingredients, company, dosage form, packaging, pharmaceutical standard, route, schedule, status, therapeutic class, and veterinary species. Searches by DIN and brand name cover primary lookup methods. However, there is no reverse lookup to find drugs by active ingredient or company, which is a notable gap for a drug database.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/wkurzatz/PharmacyMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server