mcp-drizly
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-drizlyfind a bottle of Chardonnay under $25 and check availability in Boston"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@striderlabs/mcp-drizly
A Model Context Protocol (MCP) connector for Drizly alcohol delivery. Enables AI assistants to search products, manage carts, check availability, and place orders on Drizly (drizly.com).
Features
Product Search - Search beer, wine, spirits by name, type, or brand with price and ABV filters
Product Details - Get detailed info including ABV, origin, ratings, and descriptions
Category Browsing - Browse by category (wine type, spirit type, etc.)
Availability Check - Check if products are available for delivery to an address
Store Discovery - Find available stores/retailers for a delivery address
Cart Management - Add items, view cart, and update quantities
Order Placement - Complete checkout and place orders
Order History - View past and current orders
Order Tracking - Track real-time order status and delivery estimates
Recommendations - Get personalized product recommendations
Related MCP server: wholesale-mcp
Requirements
Node.js >= 18.0.0
Playwright (for browser automation)
Installation
npm install @striderlabs/mcp-drizlyInstall Playwright browsers:
npx playwright install chromiumConfiguration
Add to your MCP client configuration (e.g., Claude Desktop claude_desktop_config.json):
{
"mcpServers": {
"drizly": {
"command": "npx",
"args": ["-y", "@striderlabs/mcp-drizly"]
}
}
}Or if installed globally:
{
"mcpServers": {
"drizly": {
"command": "mcp-drizly"
}
}
}Available Tools
search_products
Search for alcohol products by name, brand, or type.
Parameters:
query(required) - Search query stringcategory- Filter by category:beer,wine,spirits,cider,hard-seltzerminPrice/maxPrice- Price range filterminAbv/maxAbv- ABV percentage filteraddress- Delivery address for availability filtering
Example:
{
"query": "IPA beer",
"category": "beer",
"maxPrice": 20
}get_product_details
Get detailed product information.
Parameters:
productId(required) - Product ID or URL slug from Drizly
Example:
{
"productId": "dogfish-head-60-minute-ipa"
}browse_categories
Browse products by category and subcategory.
Parameters:
category- Main category:beer,wine,spirits,cider,hard-seltzer,cocktails-mixerssubcategory- Subcategory (e.g.,IPA,Chardonnay,Bourbon)
Example:
{
"category": "wine",
"subcategory": "Chardonnay"
}check_availability
Check if a product is available for delivery.
Parameters:
productId(required) - Product to checkaddress(required) - Delivery address
Example:
{
"productId": "corona-extra-beer",
"address": "123 Main St, Boston, MA 02101"
}add_to_cart
Add a product to the shopping cart.
Parameters:
productId(required) - Product IDname(required) - Product namequantity(required) - Quantity (minimum 1)price(required) - Price per unitimageUrl- Optional product image URL
Example:
{
"productId": "corona-extra-12pk",
"name": "Corona Extra 12-Pack",
"quantity": 2,
"price": 15.99
}get_cart
View current cart contents and totals.
Returns: Cart items, subtotal, delivery fee, and total.
update_cart
Update item quantity or remove from cart.
Parameters:
productId(required) - Product to updatequantity(required) - New quantity (0 removes item)
Example:
{
"productId": "corona-extra-12pk",
"quantity": 3
}get_stores
Find stores available for delivery to an address.
Parameters:
address(required) - Delivery address
Example:
{
"address": "456 Park Ave, New York, NY 10022"
}place_order
Place an order for cart items.
Parameters:
deliveryAddress(required) - Full delivery addresscardLastFour- Last 4 digits of payment cardsavePayment- Whether to save payment method
Example:
{
"deliveryAddress": "123 Main St, Apt 4B, Boston, MA 02101",
"cardLastFour": "4242"
}get_orders
View all past and current orders.
track_order
Track an order's current status.
Parameters:
orderId(required) - Order ID (format:DRZ-XXXXXXXXXX)
Example:
{
"orderId": "DRZ-1234567890"
}get_recommendations
Get personalized product recommendations.
Parameters:
categories- Preferred categories arrayminPrice/maxPrice- Price range for recommendationspreviousOrders- Previous order IDs for personalization
Example:
{
"categories": ["wine"],
"maxPrice": 30
}Development
# Install dependencies
npm install
# Build TypeScript
npm run build
# Run in development mode
npm run devArchitecture
The connector uses two main components:
src/index.ts- MCP server that defines tools and handles requestssrc/browser.ts- Browser automation layer using Playwright to interact with Drizly's website
The browser automation handles:
Age verification gates
Product search and navigation
Cart management (stored in memory)
Order simulation
Important Notes
Age Verification: Drizly requires users to be 21+. Ensure compliance with local laws.
Cart State: Cart data is stored in memory and will reset when the server restarts.
Availability: Product availability depends on your delivery location and connected retailers.
Playwright: Browser automation requires Playwright with Chromium installed.
License
MIT
Available Tools
12 toolsadd_to_cartC
Add a product to the shopping cart
| Name | Required | Description | Default |
|---|---|---|---|
| productId | Yes | Product ID to add | |
| name | Yes | Product name | |
| quantity | Yes | Quantity to add (minimum 1) | |
| price | Yes | Price per unit | |
| imageUrl | No | Product image URL (optional) |
TDQS
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 states the action ('Add') but doesn't explain key behaviors: whether this requires authentication, if it modifies existing cart items or creates new ones, potential side effects (e.g., inventory updates), or error conditions. This is inadequate for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded and wastes no space, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is insufficient. It doesn't cover behavioral aspects like authentication needs, error handling, or what the tool returns (e.g., success confirmation or updated cart). Given the complexity of cart operations and lack of structured data, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema fully documents all parameters (productId, name, quantity, price, imageUrl). The description adds no additional meaning beyond what's in the schema, such as explaining relationships between parameters or usage examples. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add') and resource ('a product to the shopping cart'), making the purpose immediately understandable. However, it doesn't distinguish this tool from sibling tools like 'update_cart' or 'place_order', which also involve cart modifications, leaving some ambiguity about when to use each.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 like 'update_cart' or 'place_order'. It lacks context about prerequisites (e.g., whether the product must be available or in stock) or exclusions, leaving the agent 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.
browse_categoriesC
Browse Drizly products by category (beer, wine, spirits) and subcategory (IPA, Chardonnay, Bourbon, etc.)
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Main category to browse | |
| subcategory | No | Subcategory (e.g., 'IPA', 'Chardonnay', 'Bourbon') |
TDQS
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 describes a read-only browsing operation but lacks details on permissions, rate limits, pagination, or response format. For a tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that clearly states the tool's purpose and includes relevant examples. It's front-loaded with the main action and resource, with no wasted words, though it could be slightly more structured for optimal clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 parameters, no output schema, no annotations), the description is adequate but incomplete. It covers the basic purpose and parameters but lacks behavioral details like response format or usage context, which are important for an agent to use it effectively without annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the schema already documents both parameters fully. The description adds minimal value by listing example categories and subcategories, but doesn't provide additional syntax or usage details beyond what the schema provides. Baseline 3 is appropriate when the schema handles most of the parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Browse Drizly products by category and subcategory.' It specifies the verb ('browse') and resource ('Drizly products'), and mentions example categories and subcategories. However, it doesn't explicitly differentiate this tool from sibling tools like 'search_products' or 'get_product_details,' which is why it doesn't achieve a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 doesn't mention any prerequisites, exclusions, or compare it to sibling tools like 'search_products' or 'get_product_details,' leaving the agent without context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_availabilityB
Check if a product is available for delivery to a specific address and see which stores carry it
| Name | Required | Description | Default |
|---|---|---|---|
| productId | Yes | Product ID to check availability for | |
| address | Yes | Delivery address to check availability at |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but lacks behavioral details. It doesn't disclose whether this is a read-only operation, if it requires authentication, rate limits, error conditions, or what the output format looks like (e.g., boolean availability, store list with stock levels). The description states the action but misses key operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action ('Check if a product is available for delivery') and adds secondary detail ('and see which stores carry it'). It has zero waste, though it could be slightly more structured for clarity (e.g., separating delivery vs. store aspects).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is incomplete for a tool that likely returns complex availability data. It doesn't explain return values (e.g., availability status, store list, delivery options), error handling, or dependencies. For a 2-parameter tool with zero annotation coverage, this leaves significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters ('productId' and 'address'). The description adds no additional meaning beyond implying these are used for availability and delivery checks, matching the schema. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Check if a product is available for delivery') and resource ('product'), distinguishing it from siblings like 'get_product_details' (which retrieves info) or 'place_order' (which initiates purchase). It explicitly mentions both delivery availability and store inventory, 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.
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 like 'get_stores' (which might list stores without product checks) or 'search_products' (which might find products without availability info). It implies usage for availability checking but offers no explicit context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cartB
View the current shopping cart contents and totals
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 states the tool is for viewing, implying a read-only operation, but doesn't disclose any behavioral traits such as authentication needs, rate limits, or what happens if the cart is empty. This leaves significant gaps for an agent to understand how to use it effectively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the key information ('View the current shopping cart contents and totals') with zero waste. It's appropriately sized for a simple tool and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity is low (0 parameters, no output schema), the description is somewhat complete but has gaps. It lacks behavioral context (e.g., no annotations, no output schema to explain return values), which could hinder an agent's ability to use it correctly in all scenarios, especially without guidance on usage or alternatives.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and schema description coverage is 100%, so there are no parameters to document. The description doesn't need to add parameter semantics, and it appropriately doesn't mention any. This meets the baseline for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('view') and resources ('shopping cart contents and totals'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'get_orders' or 'track_order', which might also involve viewing order-related information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. There are no explicit instructions on when/when-not to use it, nor any mention of prerequisites or alternatives among the sibling tools (e.g., how it differs from 'get_orders' or 'update_cart').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ordersB
View order history including past and current orders
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 states 'view,' implying a read-only operation, but doesn't clarify aspects like authentication needs, rate limits, data format, or pagination. For a tool with zero annotation coverage, this leaves significant gaps in understanding how it behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core functionality ('view order history') and adds clarifying scope ('including past and current orders'). There is no wasted text, making it highly concise and well-structured for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is adequate but minimal. It covers the basic purpose but lacks details on behavioral traits like data format or usage constraints. For a read-only tool with no structured support, it meets the minimum viable standard but could be more informative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details, which is appropriate here. A baseline of 4 is applied as it compensates adequately for the lack of parameters by focusing on the tool's purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('view') and resource ('order history'), including scope details ('past and current orders'). It distinguishes itself from siblings like 'track_order' (which likely focuses on real-time status) and 'place_order' (which creates new orders), though it doesn't explicitly name these alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by specifying 'order history,' suggesting this tool is for retrieving historical data rather than current actions. However, it doesn't provide explicit guidance on when to use it versus alternatives like 'track_order' (for ongoing orders) or 'get_cart' (for pending items), leaving some ambiguity for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_product_detailsB
Get detailed information about a specific product including ABV, origin, ratings, and pricing
| Name | Required | Description | Default |
|---|---|---|---|
| productId | Yes | Product ID or slug from Drizly |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool retrieves information (a read operation), but doesn't disclose behavioral traits such as authentication needs, rate limits, error conditions, or whether it requires a valid product ID format. This leaves significant gaps for an agent to understand how to invoke it safely and effectively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the purpose and lists key attributes without unnecessary words. Every part of the sentence contributes to understanding the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is moderately complete for a simple read tool. It specifies what information is returned (ABV, origin, ratings, pricing), but lacks details on response format, error handling, or dependencies. For a tool with one parameter and high schema coverage, it's adequate but has clear gaps in behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the parameter 'productId' documented as 'Product ID or slug from Drizly'. The description adds no additional parameter semantics beyond what the schema provides, such as examples or format details. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 'detailed information about a specific product', with specific attributes listed (ABV, origin, ratings, pricing). It distinguishes from siblings like 'search_products' (which likely returns multiple products) and 'browse_categories' (which is category-based), though it doesn't explicitly name these distinctions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when detailed information for a specific product is needed, but doesn't explicitly state when to use this tool versus alternatives like 'search_products' (for broader searches) or 'get_recommendations' (for suggestions). No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recommendationsC
Get personalized product recommendations based on preferences and order history
| Name | Required | Description | Default |
|---|---|---|---|
| categories | No | Preferred categories for recommendations | |
| minPrice | No | Minimum price for recommendations | |
| maxPrice | No | Maximum price for recommendations | |
| previousOrders | No | Previous order IDs for personalization |
TDQS
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 mentions personalization based on preferences and order history, which hints at data usage, but lacks details on rate limits, authentication needs, response format, or whether it's a read-only operation. For a tool with 4 parameters and no annotations, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. It directly states what the tool does, making it easy to parse. There's no redundancy or fluff, earning its place as a concise definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 parameters, personalization logic) and lack of annotations and output schema, the description is incomplete. It doesn't explain the return values, error conditions, or behavioral traits like data privacy implications. For a recommendation tool with no structured output, more context is needed to guide effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds minimal meaning beyond the input schema, which has 100% coverage with clear parameter descriptions. It implies that 'preferences' map to categories and price ranges, and 'order history' maps to previousOrders, but doesn't elaborate on how these parameters interact or affect results. With high schema coverage, the baseline is 3, and the description doesn't significantly enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 personalized product recommendations based on preferences and order history.' It specifies the verb ('Get') and resource ('personalized product recommendations'), and distinguishes it from siblings like search_products or browse_categories by emphasizing personalization. However, it doesn't explicitly differentiate from all siblings (e.g., get_orders also involves order history).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 doesn't mention when to prefer get_recommendations over search_products (which might be for broader queries) or get_orders (which retrieves order details rather than recommendations). There's no context about prerequisites, such as needing order history for effective personalization, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_storesB
Get available stores and retailers that can deliver to a specific address
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Delivery address to find available stores for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool's purpose but lacks behavioral details such as whether it requires authentication, has rate limits, returns paginated results, or what the output format looks like (e.g., list of stores with delivery options). For a tool with no annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose ('Get available stores and retailers') and adds necessary scope ('that can deliver to a specific address'). There is zero waste or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (1 parameter, no output schema, no annotations), the description is adequate but incomplete. It covers the purpose but lacks behavioral context (e.g., response format, error handling) and usage guidelines. Without annotations or output schema, more detail would improve completeness for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the single 'address' parameter. The description adds marginal value by implying the address is used for delivery eligibility, but doesn't provide additional context like address format requirements or examples. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Get available stores and retailers') and the resource ('stores and retailers'), with explicit scope ('that can deliver to a specific address'). It distinguishes from siblings like 'search_products' or 'browse_categories' by focusing on delivery-eligible stores rather than products or categories.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. While the description implies it's for finding stores that deliver to an address, it doesn't specify prerequisites (e.g., whether the address must be validated first), exclusions, or comparisons to siblings like 'check_availability' (which might overlap in functionality).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_orderC
Complete checkout and place the order for items in the cart
| Name | Required | Description | Default |
|---|---|---|---|
| deliveryAddress | Yes | Full delivery address | |
| cardLastFour | No | Last four digits of payment card (optional) | |
| savePayment | No | Whether to save payment method for future orders |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the action without disclosing behavioral traits. It doesn't mention if this is a destructive/mutative operation, potential side effects (e.g., charging payment, inventory changes), error conditions, or response format, leaving significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste, clearly front-loading the core action. Every word contributes directly to stating the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a purchase tool with no annotations and no output schema, the description is incomplete. It lacks crucial details like behavioral implications, return values, or error handling, making it inadequate for safe and effective use by an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all parameters. The description adds no additional meaning about parameters beyond implying they relate to checkout, which doesn't compensate for or enhance the schema's details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('complete checkout and place the order') and resource ('items in the cart'), making the purpose unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'update_cart' or 'get_cart', which would require mentioning this is the final purchase action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 like 'update_cart' or prerequisites such as having items in the cart. It merely states what the tool does without context about timing or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_productsB
Search for beer, wine, spirits, and other alcoholic beverages on Drizly by name, type, or brand
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query (product name, brand, or type) | |
| category | No | Filter by category | |
| minPrice | No | Minimum price filter | |
| maxPrice | No | Maximum price filter | |
| minAbv | No | Minimum ABV percentage | |
| maxAbv | No | Maximum ABV percentage | |
| address | No | Delivery address to filter by availability |
TDQS
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 mentions searching on Drizly but does not cover key traits like whether this is a read-only operation, potential rate limits, authentication needs, or what the search results include (e.g., format, pagination). This is a significant gap for a search tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without unnecessary details. Every word earns its place, making it highly concise and well-structured for quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (7 parameters, no annotations, no output schema), the description is incomplete. It adequately states the purpose but lacks behavioral context, usage guidelines, and details on output format. However, the high schema coverage partially compensates, making it minimally viable but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 7 parameters. The description adds minimal value by mentioning 'by name, type, or brand,' which loosely relates to the 'query' parameter but does not provide additional syntax or meaning beyond what the schema already specifies. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Search for beer, wine, spirits, and other alcoholic beverages on Drizly by name, type, or brand.' It specifies the verb ('search'), resource ('alcoholic beverages'), and platform ('Drizly'), but does not explicitly differentiate it from sibling tools like 'browse_categories' or 'get_product_details', which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 mentions searching 'by name, type, or brand,' but does not compare it to siblings like 'browse_categories' (for browsing without a query) or 'get_product_details' (for specific product info), leaving the agent without explicit usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_orderB
Track the current status and estimated delivery time of an order
| Name | Required | Description | Default |
|---|---|---|---|
| orderId | Yes | Order ID to track (format: DRZ-XXXXXXXXXX) |
TDQS
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 states the tool retrieves status and delivery time, implying a read-only operation, but doesn't cover aspects like error handling (e.g., invalid order IDs), rate limits, authentication needs, or whether it's idempotent. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. It directly states what the tool does ('track the current status and estimated delivery time of an order'), making it easy to parse and understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (a single parameter with full schema coverage) and lack of annotations or output schema, the description is minimally adequate. It covers the basic purpose but lacks details on usage context, behavioral traits, and output format, which could hinder an agent's ability to use it effectively in varied scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the 'orderId' parameter clearly documented in the schema itself. The description doesn't add any parameter-specific details beyond what the schema provides, such as examples or contextual usage. With high schema coverage, the baseline score of 3 is appropriate, as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('track') and resources ('order'), specifying what information is retrieved ('current status and estimated delivery time'). It doesn't explicitly differentiate from sibling tools like 'get_orders', but the focus on tracking a specific order's status and delivery time is reasonably distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 like 'get_orders' (which might list orders without tracking details) or 'place_order' (for creating orders). There's no mention of prerequisites, such as needing a valid order ID, or contextual cues for when tracking is appropriate versus other order-related operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_cartC
Update the quantity of an item in the cart or remove it (set quantity to 0)
| Name | Required | Description | Default |
|---|---|---|---|
| productId | Yes | Product ID to update | |
| quantity | Yes | New quantity (set to 0 to remove from cart) |
TDQS
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 states the tool updates or removes items, implying mutation, but does not cover permissions, side effects (e.g., cart totals update), error handling, or response format. This is inadequate for a mutation tool without annotation support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's function without redundancy. It is front-loaded with the core action and includes necessary detail (quantity to 0 for removal) in a compact form.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's mutation nature, lack of annotations, and no output schema, the description is insufficient. It does not explain what happens on success/failure, return values, or interactions with other cart operations, leaving significant gaps for agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so parameters are fully documented in the schema. The description adds minimal value by clarifying that quantity 0 means removal, which is already implied in the schema's description for 'quantity'. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('update the quantity of an item in the cart or remove it') and specifies the resource ('cart'), making the purpose unambiguous. However, it does not explicitly differentiate from sibling tools like 'add_to_cart' or 'get_cart', which would be needed for a score of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 like 'add_to_cart' (for initial addition) or 'get_cart' (for viewing). It mentions setting quantity to 0 for removal, but lacks context on prerequisites, error conditions, or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
12 tool updates
v1.0.0- First observed
add_to_cart - First observed
browse_categories - First observed
check_availability - First observed
get_cart - First observed
get_orders - First observed
get_product_details - First observed
get_recommendations - First observed
get_stores - First observed
place_order - First observed
search_products - First observed
track_order - First observed
update_cart
TDQS
Every tool has a clearly distinct purpose with no ambiguity. The tools cover different aspects of the shopping workflow (browsing, searching, cart management, ordering, tracking) without overlap. For example, 'add_to_cart' and 'update_cart' are complementary but distinct operations.
All tools follow a consistent verb_noun naming pattern throughout (e.g., 'add_to_cart', 'browse_categories', 'get_orders'). The verbs are descriptive and appropriate for each action, with no mixing of conventions or styles.
With 12 tools, this server is well-scoped for an e-commerce alcohol delivery platform. Each tool earns its place by covering essential functions like product discovery, cart management, ordering, and tracking, without being overly sparse or bloated.
The tool set provides complete coverage of the domain, including product browsing/searching, cart CRUD operations (add, update, get), ordering (place, track, get history), and supporting functions like availability checks and recommendations. There are no obvious gaps that would hinder agent workflows.
Maintenance
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
Hosted MCP for e-commerce: live product catalog, stock, and pricing for AI agents.
- ZapierOAuthcom.zapier
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.
Flight search MCP server providing search, pagination, and itinerary details for AI assistants.
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceA Shopify-focused MCP server that enables AI agents to manage store operations like order tracking, product discovery, and checkout link generation. It facilitates customer-facing interactions including shipping estimates and real-time inventory searches.-
- FlicenseNot gradedqualityNot gradedmaintenanceAn MCP server that enables AI assistants to browse, analyze, and automate interactions with wholesale websites using Playwright and recipe-based HTTP execution. It supports tasks like automated login, product searching, and cart management through browser snapshots and network log analysis.-
- FlicenseNot gradedqualityCmaintenanceMCP server for grocery-related web automation using Playwright, enabling AI assistants to interact with grocery websites.-
- AlicenseNot gradedqualityCmaintenanceAn MCP server for grocery shopping at Kroger-owned stores, enabling product search, store finder, cart management, and more through AI assistants.21MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/markswendsen-code/mcp-drizly'
If you have feedback or need assistance with the MCP directory API, please join our Discord server