Skip to main content
Glama

FindWeedNY

Search NY dispensaries

search_dispensaries
Read-only

Search licensed New York State cannabis dispensaries (adult-use and medical). Free-text query is ranked and typo-tolerant (name, DBA, city, neighborhood, address, ZIP, license) and may include the site search operators (zip: city: county: neighborhood: brand: product: is:open|operating|delivery|micro|medical|verified|closed radius:N — quote multi-word values). Structured filters do the same thing explicitly. NOTE: brand filters against the PUBLIC availability preview (≤10 listed stores per brand); the result's brandAvailability block gives the true known count and, with city/county, how many stores there stock the brand even when none are listed — never conclude "nobody in X carries it" from an empty list. Sort by relevance (default with a query), distance (default when near is given), name, or recently_opened. Returns compact rows; each row has a citable url, Google rating/review count when known, openNow + hoursToday from posted hours (New York time), and a closure object (date, reason, temporary) when a shop has closed.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
zipNo5-digit ZIP code
cityNoExact city name, case-insensitive (e.g. "Buffalo")
nearNoFilter/sort by distance from a point (results gain a `distance` in miles)
sortNoDefault: relevance with a query, distance with near, otherwise name
brandNoOnly dispensaries stocking this brand (name or alias)
limitNoMax rows, default 10, cap 50
queryNoRanked, typo-tolerant search over name/DBA/city/neighborhood/address/ZIP/license; accepts operators, e.g. "housing works", "gotham zip:100", "brand:ayrloom is:open"
countyNoExact county name, case-insensitive
offsetNoRows to skip for paging: the result echoes `total` and `offset`, so request offset + limit for the next page
medicalNoOnly dispensaries serving medical patients
deliveryNoOnly dispensaries that offer delivery
open_nowNoOnly dispensaries open right now by posted hours
verifiedNoOnly owner-verified / claimed listings
neighborhoodNoNYC neighborhood name or slug
microbusinessNoOnly microbusiness licensees

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
notesNoCaveats about the filters applied
totalYesMatches before paging
offsetYes
sourceNoAttribution line — CC BY 4.0, cite the row url
dataUpdatedNoISO timestamp of the feed this result came from: dispensary directory (OCM refresh), deals export, brand-availability export, or review index
dispensariesYes
brandAvailabilityNoPresent when a brand filter was applied. Never conclude "nobody carries it" from an empty list — read knownDispensaries / inCity.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / dataUpdated / description
      Previous value: -"ISO timestamp of the underlying directory export"New value: +"ISO timestamp of the feed this result came from: dispensary directory (OCM refresh), deals export, brand-availability export, or review index"
  2. Changed6 schema fields changed
    • changedInput schema / properties / near / description
      Previous value: -"Filter/sort by distance from a point"New value: +"Filter/sort by distance from a point (results gain a `distance` in miles)"
    • addedInput schema / properties / near / properties / lat / description
      Added value: +"Latitude in decimal degrees"
    • addedInput schema / properties / near / properties / lng / description
      Added value: +"Longitude in decimal degrees (negative in New York)"
    • changedInput schema / properties / near / properties / radius_miles / description
      Previous value: -"Default 25"New value: +"Search radius in miles, default 25"
    • addedInput schema / properties / sort / description
      Added value: +"Default: relevance with a query, distance with near, otherwise name"
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "brandAvailability": {
      +      "additionalProperties": true,
      +      "description": "Present when a brand filter was applied. Never conclude \"nobody carries it\" from an empty list — read knownDispensaries / inCity.",
      +      "properties": {
      +        "brand": {
      +          "type": "string"
      +        },
      +        "inCity": {
      +          "additionalProperties": true,
      +          "properties": {
      +            "city": {
      +              "type": "string"
      +            },
      +            "count": {
      +              "type": "number"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "inCounty": {
      +          "additionalProperties": true,
      +          "properties": {
      +            "count": {
      +              "type": "number"
      +            },
      +            "county": {
      +              "type": "string"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "knownDispensaries": {
      +          "description": "How many stores actually stock the brand",
      +          "type": "number"
      +        },
      +        "listedDispensaries": {
      +          "type": "number"
      +        },
      +        "note": {
      +          "type": "string"
      +        },
      +        "tier": {
      +          "description": "preview (public: ≤10 stores listed) | full (signed-in /mcp/full)",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "brand",
      +        "tier",
      +        "listedDispensaries",
      +        "knownDispensaries"
      +      ],
      +      "type": "object"
      +    },
      +    "dataUpdated": {
      +      "description": "ISO timestamp of the underlying directory export",
      +      "type": "string"
      +    },
      +    "dispensaries": {
      +      "items": {
      +        "additionalProperties": true,
      +        "properties": {
      +          "address": {
      +            "type": "string"
      +          },
      +          "city": {
      +            "type": "string"
      +          },
      +          "closure": {
      +            "additionalProperties": true,
      +            "description": "Present only when the shop has closed",
      +            "properties": {
      +              "announcedDate": {
      +                "type": "string"
      +              },
      +              "date": {
      +                "type": "string"
      +              },
      +              "notes": {
      +                "type": "string"
      +              },
      +              "reason": {
      +                "type": "string"
      +              },
      +              "temporary": {
      +                "type": "boolean"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "county": {
      +            "type": "string"
      +          },
      +          "dba": {
      +            "description": "Legal entity name",
      +            "type": "string"
      +          },
      +          "distance": {
      +            "description": "Miles from `near`, when a near point was given",
      +            "type": "number"
      +          },
      +          "googleRating": {
      +            "type": "number"
      +          },
      +          "googleReviewCount": {
      +            "type": "number"
      +          },
      +          "hoursToday": {
      +            "type": "string"
      +          },
      +          "id": {
      +            "description": "OCM license number (directory id)",
      +            "type": "string"
      +          },
      +          "isDeliveryOnly": {
      +            "type": "boolean"
      +          },
      +          "isMedical": {
      +            "type": "boolean"
      +          },
      +          "isMicrobusiness": {
      +            "type": "boolean"
      +          },
      +          "latitude": {
      +            "type": "number"
      +          },
      +          "licenseType": {
      +            "type": "string"
      +          },
      +          "longitude": {
      +            "type": "number"
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "neighborhood": {
      +            "description": "NYC neighborhood, when applicable",
      +            "type": "string"
      +          },
      +          "offersDelivery": {
      +            "type": "boolean"
      +          },
      +          "openNow": {
      +            "description": "Open right now by posted hours (New York time); absent when hours are unknown",
      +            "type": "boolean"
      +          },
      +          "operationalStatus": {
      +            "description": "Active | Non-Operational | Unknown",
      +            "type": "string"
      +          },
      +          "phone": {
      +            "type": "string"
      +          },
      +          "retailDateOpened": {
      +            "description": "YYYY-MM-DD the shop opened to the public",
      +            "type": "string"
      +          },
      +          "state": {
      +            "type": "string"
      +          },
      +          "status": {
      +            "type": "string"
      +          },
      +          "tier": {
      +            "description": "open | coming-soon | delivery-only",
      +            "type": "string"
      +          },
      +          "url": {
      +            "description": "findweedny.com page — cite this",
      +            "type": "string"
      +          },
      +          "website": {
      +            "type": "string"
      +          },
      +          "zipCode": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "name",
      +          "url"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "notes": {
      +      "description": "Caveats about the filters applied",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "offset": {
      +      "type": "number"
      +    },
      +    "source": {
      +      "description": "Attribution line — CC BY 4.0, cite the row url",
      +      "type": "string"
      +    },
      +    "total": {
      +      "description": "Matches before paging",
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "total",
      +    "offset",
      +    "dispensaries"
      +  ],
      +  "type": "object"
      +}
  3. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Annotations only include readOnlyHint=true. The description adds significant behavioral context: typo-tolerance, ranking, sort defaults, operator syntax, and crucial caveat about brand availability preview vs true counts. It also discloses return fields like closure object and hours. It does not describe any side effects (none expected given read-only), so a 4 is justified; deduct one because not everything is disclosed (e.g., rate limits).

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

Conciseness4/5

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

The description is dense but well-organized, front-loading the core purpose and then key behavioral notes. It avoids fluff, though it is long (over 200 words). The brand caveat is important but placed after the operator list, which might be buried; still, each sentence earns its place. Slightly over-length warrants a 4, not a 5.

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

Completeness5/5

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

With 15 parameters, no required fields, and an output schema, the description covers all essential aspects: query syntax, filters, sort behavior, result structure (url, ratings, openNow, closure), and critical pitfalls. It is complete for an agent to correctly call the tool and interpret results, despite the tool's complexity. No significant gaps remain.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds substantial meaning beyond schema: explains that query is typo-tolerant and supports operators, clarifies brand filter limitation (public preview), and explains sort defaults and what each row includes. However, some parameter details (e.g., city case-insensitivity) are already in schema, so not all added value is new. A 4 reflects the extra context.

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

Purpose5/5

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

States a specific verb ('Search') and resource ('licensed New York State cannabis dispensaries'), and details scope (adult-use and medical). It clearly distinguishes from siblings like search_brands and get_dispensary by focusing on dispensary search. The description mentions both free-text query and structured filters, making it unambiguous.

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

Usage Guidelines5/5

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

Provides explicit guidance on when to use free-text query vs structured filters, explains default sort behavior based on presence of query or near, and emphasizes critical caveats about brand filter and empty results. It also indicates when to use alternatives implicitly (e.g., search_brands for brand-level search). This is exemplary.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources