Skip to main content
Glama

FindWeedNY

Server Details

Licensed NY cannabis dispensaries, brands, deals, license checks and lab-anchored reviews. No auth.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

TDQS

A4.4/5.0

Scored across 9 tools

Disambiguation5/5

Each tool maps to a distinct resource and action: get_* for single-entity retrieval, search_* for filtered discovery, plus get_deals, get_market_stats, and verify_license for unique functions. Even the paired search/get tools (brands, dispensaries, reviews) are clearly differentiated as list-versus-detail.

Naming Consistency5/5

All tools follow a consistent get_<entity> or search_<entity> pattern. The only outlier, verify_license, still uses a clear verb_noun structure that fits the convention.

Tool Count5/5

Nine tools is well-scoped for a cannabis industry lookup server. Each tool covers a distinct entity or operation without redundancy.

Completeness5/5

The surface fully covers the read-only domain: search and detail retrieval for brands, dispensaries, and reviews; market stats; deals; and license verification. Since it's an information aggregator, no create/update/delete operations are needed.

Available Tools

9 tools
get_brandGet brand details + where to buyA
Read-only
Inspect

Full public record for one brand by slug or name, including which licensed NY dispensaries currently stock it (from crawled menu availability, preview tier), its parent / child brands, and FindWeedNY's own reviews of its products when there are any.

ParametersJSON Schema
NameRequiredDescriptionDefault
brandYesBrand slug or name

Output Schema

ParametersJSON Schema
NameRequiredDescription
brandNo
foundYes
sourceNoAttribution line — CC BY 4.0, cite the row url
messageNo
dataUpdatedNoISO timestamp of the feed this result came from: dispensary directory (OCM refresh), deals export, brand-availability export, or review index
availabilityNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, so the safety profile is covered. The description adds meaningful behavioral context beyond that: it discloses that availability comes from 'crawled menu availability, preview tier' (a data-quality caveat), that reviews are 'FindWeedNY's own' (source attribution), and that reviews appear only 'when there are any' (conditional presence). This is exactly the kind of context that helps an agent set expectations.

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 a single, information-dense sentence that front-loads the core purpose ('Full public record for one brand') before listing contents. Every clause adds value. It is slightly long but justified by the need to enumerate the record's components. No filler or repetition.

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 read-only single-resource lookup with one fully documented parameter and an output schema present, the description covers the key expectations: what the record contains, the data source caveat, and the conditional nature of reviews. It doesn't explain the output schema's structure, but the output schema itself handles that. A minor gap is not stating what happens when no brand matches, but that is a small omission for a lookup tool.

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% and the single parameter 'brand' is described as 'Brand slug or name' in the schema. The description reinforces this by saying 'by slug or name' but adds no new format details, such as case sensitivity or how to disambiguate. Baseline 3 is appropriate because the schema already carries the parameter meaning.

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 ('get') and resource ('full public record for one brand'), and enumerates the exact contents: licensed NY dispensaries stocking it, parent/child brands, and FindWeedNY's own product reviews. This clearly distinguishes it from siblings like search_brands (search vs. get) and get_dispensary (different resource).

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 implies when to use this tool: when you need a full public record for a single brand by slug or name, including availability and reviews. It doesn't explicitly state when not to use it or name alternatives, but the 'by slug or name' qualifier and the contrast with search_brands (which would be for discovery) provide clear context. A small gap: no explicit exclusion like 'for searching, use search_brands instead.'

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

get_dealsGet current deal previewsA
Read-only
Inspect

Current cannabis deal and promotion PREVIEWS (top deals per dispensary) for one dispensary or a city. The full deal feed requires a free account at findweedny.com.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoCity name (returns up to 5 dispensaries with deals)
limitNoMax deals per dispensary, default 6, cap 10
dispensary_idNoOCM license number

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
foundNo
sourceNoAttribution line — CC BY 4.0, cite the row url
messageNo
resultsNo
dataUpdatedNoISO timestamp of the feed this result came from: dispensary directory (OCM refresh), deals export, brand-availability export, or review index

TDQS

A4.2/5.0
Behavior4/5

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

readOnlyHint already marks it as a safe read operation, and the description adds the behavioral nuance that only previews are returned, not the full feed, which requires a free account. This surfaces a useful limitation beyond what annotations alone communicate.

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, purposeful sentences. The first explains what the tool does, the second explains the account limitation without wasting 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?

For a read-only, optionally-parameterized tool with an output schema, the description is appropriately complete. The only minor gap is not clarifying behavior when both city and dispensary_id are provided, which is an edge case.

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 gives 100% coverage on city, limit with default/cap, and dispensary_id. The description only lightly restates the city/dispensary choice and adds no new parameter-level nuance, so it matches the baseline for well-documented schemas.

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 specifies the resource (cannabis deals/promotions) and the precise scope: top deals per store for one dispensary or a city. It also differentiates this preview tool from the full deal feed, so an agent can place it immediately.

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?

It explicitly states the intended contexts (one dispensary or a city) and notes that the full deal feed requires a separate account, implying this tool is only for previews. It does not name alternative sibling tools, but no sibling provides full deals, so the context is still clear.

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

get_dispensaryGet dispensary detailsA
Read-only
Inspect

Full public record for one dispensary by OCM license number (e.g. "OCM-CAURD-23-000023"), verified alias, or legacy id. Includes hours, description, and license dates.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesLicense number, alias, or legacy id

Output Schema

ParametersJSON Schema
NameRequiredDescription
foundYes
sourceNoAttribution line — CC BY 4.0, cite the row url
messageNo
dispensaryNo
dataUpdatedNoISO timestamp of the feed this result came from: dispensary directory (OCM refresh), deals export, brand-availability export, or review index

TDQS

A4.2/5.0
Behavior4/5

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

The readOnlyHint annotation already conveys that this is a safe read operation, and the description adds concrete behavioral detail by listing the record contents (hours, description, license dates). It does not disclose error handling or edge cases, but for a simple lookup tool with the safety profile already annotated, this is adequate.

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, with the primary purpose front-loaded and the specifics (identifier types and included data) following. Every phrase adds information; there is no fluff 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 single-parameter get operation with an output schema and a readOnly annotation, the description covers the essential aspects: what identifiers are accepted and what fields are returned. It does not mention potential failure modes or authentication, but these are less critical given the simple interface and the presence of the output schema.

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 input schema already describes the id parameter as 'License number, alias, or legacy id', achieving 100% coverage. The description reinforces this and adds a concrete example of the license format ('OCM-CAURD-23-000023'), which clarifies the expected input beyond the generic schema text. This additional example provides meaningful value.

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 fetches the full public record for a single dispensary, identifies the accepted identifier types (OCM license number with an example, verified alias, or legacy id), and enumerates included fields (hours, description, license dates). This distinguishes it from sibling search tools like search_dispensaries, which return lists, and other get_* tools that target different resources.

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 when to use the tool—when you have a specific identifier for a dispensary and want its full record—but it does not explicitly contrast it with alternatives or state when not to use it. An agent could infer the distinction from the singular 'one dispensary' versus the sibling search_dispensaries, but no direct guidance is given.

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

get_market_statsNY cannabis market statsA
Read-only
Inspect

Summary statistics for the New York licensed cannabis market: dispensary totals, counts by license type and tier, microbusiness / delivery / non-operational counts, top cities, dispensaries opened and closed in the last 90 days, and brand totals by type and grow method.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
totalYesLicensed dispensaries in the directory
brandsNo
byTierNoopen | coming-soon | delivery-only → count
sourceNoAttribution line — CC BY 4.0, cite the row url
topCitiesNo
dataUpdatedNoISO timestamp of the feed this result came from: dispensary directory (OCM refresh), deals export, brand-availability export, or review index
openDataHubNo
deliveryOnlyNo
byLicenseTypeNolicense type → count
medicalServingNo
nonOperationalNo
recentlyClosedNoClosed in the last 90 days
recentlyOpenedNoOpened in the last 90 days
microbusinessesNo
offeringDeliveryNo

TDQS

A3.7/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds useful context about what statistics are included, but it does not disclose behavioral traits beyond the existing annotation. The presence of an output schema further reduces the need to describe return values.

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 a single, information-dense sentence with no fluff; every listed item adds useful detail. It is somewhat dense and could be structured with separators for readability, but it remains appropriately sized for the range of statistics covered.

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 zero-parameter, read-only statistics tool with an output schema, the description is complete. It states the market, the scope, and the specific breakdowns included, and there is no ambiguity about what the tool returns or how to invoke it.

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 tool has zero parameters, so there are no parameter semantics to clarify. The baseline of 4 applies because parameter semantics are not applicable and the description does not need to compensate for any schema gaps.

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

Purpose4/5

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

The description clearly identifies the resource as summary statistics for the New York licensed cannabis market and enumerates the exact dimensions included. It lacks an explicit action verb, relying on the tool name and title, but the intended purpose is unambiguous and distinct from the individual entity 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 this is the tool for market-level aggregate statistics, but it does not explicitly say when to use it versus the sibling tools or when not to use it. It provides clear context about the content, but no alternative guidance or exclusions.

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

get_reviewGet one FindWeedNY reviewA
Read-only
Inspect

One review by slug (from search_reviews) with the full lab panel: every cannabinoid and terpene measured, batch number, price paid, COA link, and the excerpt. Full review text stays on the linked page.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesReview slug, e.g. "1slice-superboof-flower"

Output Schema

ParametersJSON Schema
NameRequiredDescription
foundYes
reviewNo
sourceNoAttribution line — CC BY 4.0, cite the row url
messageNo
dataUpdatedNoISO timestamp of the feed this result came from: dispensary directory (OCM refresh), deals export, brand-availability export, or review index

TDQS

A4.3/5.0
Behavior4/5

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

The annotation readOnlyHint=true already signals a non-destructive operation, so the description does not need to restate that. It adds useful behavioral context by listing exactly which fields are returned and explicitly stating that the full review text is NOT included and stays on the linked page. This gives the agent a realistic picture of the tool's output limits.

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 compact and packed with meaning in two sentences. It front-loads the primary purpose immediately, then delivers the payload specifics and the one behavioral caveat. Every clause earns its place and no words are wasted.

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 a single required parameter, an output schema already available, and readOnlyHint=true annotation, the description provides exactly what an agent needs to call the tool successfully: where the slug comes from, what the response covers, and what is deliberately omitted. There are no missing instructions for this simple, well-scoped retrieval tool.

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 100% coverage for the only parameter, slug, including an example ('1slice-superboof-flower'). The description reinforces that the slug comes from search_reviews, which is genuinely useful context, but it adds no new syntax or formatting details beyond the schema. This matches the baseline of 3 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 states a specific verb and resource: 'Get one review by slug' with the distinction that it comes 'from search_reviews'. It enumerates the exact payload (lab panel, cannabinoids/terpenes, batch number, price paid, COA link, excerpt) and calls out an explicit non-goal (full text stays on the linked page), making it easy for an agent to tell apart from search_reviews or get_brand.

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 gives clear context: use this tool when you have a slug from search_reviews and need the detailed lab/panel data for one review. It does not spell out an explicit 'when not to use' list, but 'from search_reviews' and the statement that full text is on the linked page provide good routing and boundary information. A small gap is that it doesn't mention what to do if a slug doesn't exist or how to get slugs besides search_reviews.

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

search_brandsSearch NY cannabis brandsA
Read-only
Inspect

Search cannabis brands sold in New York. Filter by name, product category (e.g. flower, vapes, edibles, pre-rolls), brand type (local / national / mso), New York origin, microbusiness licensees, grow method (indoor / outdoor / mixed-light / combination — from OCM cultivator licenses; "sun-grown" and "greenhouse" accepted as aliases), ownership certification (woman-owned, veteran-owned, bipoc-owned, social-equity…), tag, or parent brand (the house that owns it — e.g. which brands PharmaCann or 1 Off run in NY). Rows include growType, licenseType, certifications, tags and how many dispensaries stock the brand.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoCatalog tag, e.g. "craft", "small-batch", "living-soil", "hudson-valley"
typeNoBrand type: local (NY), national, or multi-state operator
limitNoMax rows, default 10, cap 50
queryNoSubstring match on brand name
offsetNoRows to skip for paging: the result echoes `total` and `offset`, so request offset + limit for the next page
parentNoOnly brands owned by this parent brand / house (slug or name), e.g. "1-off", "PharmaCann", "GTI"
categoryNoProduct category, e.g. "vapes"
ny_basedNoOnly brands headquartered / grown in New York
grow_typeNoCultivation method from OCM license data. sun-grown = outdoor; greenhouse = mixed-light or combination
certificationNoOwnership/impact certification, e.g. "woman-owned", "veteran-owned", "bipoc-owned", "social-equity"
microbusinessNoOnly brands holding a NY microbusiness license

Output Schema

ParametersJSON Schema
NameRequiredDescription
totalYes
brandsYes
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

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, and the description adds valuable behavior beyond that: it explains the grow-method aliases and their source in OCM cultivator licenses, and states exactly what fields rows contain, including 'how many dispensaries stock the brand.' This gives the agent concrete expectations of the tool's output behavior.

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 purpose is front-loaded, and all filter options are grouped into a single well-structured sentence with a second sentence covering output fields. Despite the breadth of 11 parameters, there is no fluff, repetition, or filler—every clause adds filtering or result context.

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 read-only search tool with 11 optional parameters and an output schema, the description covers the full filter surface, the data source, alias resolution, and row contents. An agent has everything needed to decide whether this tool fits the user's query.

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 documents every parameter. The description largely restates those semantics with examples rather than adding entirely new meaning, though it does helpfully compress the grow_type aliases and brand-type categories into one readable overview.

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 a specific verb and resource: 'Search cannabis brands sold in New York.' It then enumerates the main filter dimensions, distinguishing this broad search operation from sibling tools like get_brand without needing to name them explicitly.

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 makes the search context clear by listing the many filter axes, implying this is the go-to tool for multi-dimensional brand discovery. It does not explicitly name alternatives or when-not-to-use it, but the broad-scoped phrasing provides unambiguous context.

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

search_dispensariesSearch NY dispensariesA
Read-only
Inspect

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.

ParametersJSON 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

ParametersJSON Schema
NameRequiredDescription
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.

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.

search_reviewsSearch FindWeedNY product reviewsA
Read-only
Inspect

FindWeedNY's own independent, lab-anchored reviews of New York cannabis products (flower, vapes, concentrates, edibles). Every review has a 1–5 rating and, for cannabis products, the COA numbers: THC %, total terpenes %, top terpenes, plus a link to the certificate of analysis. Filter by brand, product type, strain, cultivation method, or minimum rating; sort by date, rating, or terpenes. Use this for "is brand X any good", "best-tested flower", or "most terpene-rich vape" questions. Rows carry an excerpt and a url to the full review.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoDefault date (newest first)
brandNoBrand name or slug
limitNoMax rows, default 10, cap 50
queryNoText match on title, product, brand, or strain
offsetNoRows to skip for paging: the result echoes `total` and `offset`, so request offset + limit for the next page
strainNoStrain or type, e.g. "hybrid", "sativa", "indica", or a strain name
min_ratingNo1–5
cultivationNoHow the flower was grown, when the review records it
product_typeNoKind of product reviewed

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
totalYes
offsetYes
sourceNoAttribution line — CC BY 4.0, cite the row url
reviewsYes
dataUpdatedNoISO timestamp of the feed this result came from: dispensary directory (OCM refresh), deals export, brand-availability export, or review index

TDQS

A4.5/5.0
Behavior4/5

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

Annotations provide readOnlyHint=true, so the agent knows this is a safe read operation. The description adds meaningful behavioral context beyond that: every review has a 1–5 rating, cannabis reviews include COA numbers and a certificate link, and rows carry an excerpt and url. It also discloses the default sort (date, newest first) and the limit cap (50) via the schema. It doesn't mention pagination behavior beyond the schema's offset description, but the schema already covers 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?

The description is a single dense paragraph that front-loads the core purpose, then details the review content, then filter/sort options, then example queries, then the row shape. Every sentence earns its place; no filler or repetition of the schema.

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 read-only search tool with 100% schema coverage, an output schema, and no required parameters, the description is complete. It explains what the tool returns, how to filter/sort, and gives example use cases. The only minor gap is not describing the exact output schema fields, but the output schema exists and the description mentions excerpt and url, so an agent has enough to call it 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?

Schema description coverage is 100%, so the schema already documents all 9 parameters. The description adds value by explaining the review content (COA numbers, terpenes, rating) and giving example queries, but it doesn't add much per-parameter meaning beyond what the schema provides. 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 states a specific verb ('search') and resource ('FindWeedNY product reviews'), and clearly distinguishes this tool from siblings like get_review (full review vs. rows with excerpt/url) and search_brands/search_dispensaries (product reviews vs. brands/dispensaries). It also enumerates the review content (rating, COA numbers, terpenes, link) and the filter/sort dimensions, so an agent can tell exactly what this tool returns.

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?

The description gives explicit example queries ('is brand X any good', 'best-tested flower', 'most terpene-rich vape') and states the filter/sort capabilities. It implies when to use this tool versus get_review (rows with excerpt and url vs. full review) and search_brands/search_dispensaries (product reviews vs. brand/dispensary search). This is strong routing guidance.

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

verify_licenseVerify a NY OCM cannabis licenseA
Read-only
Inspect

Look up ANY New York OCM cannabis license number — retail dispensary, microbusiness, cultivator, processor, distributor, registered organization — against the full OCM licensing record (3,000+ licenses), not just shops. Returns the license type, status, holder, dates, county, and for cultivators the grow method; links the matching dispensary listing and brand when we have them. A partial number, application number, or company name returns candidates in similar. Use it to answer "is this a real licensed NY business" and "who holds this license".

ParametersJSON Schema
NameRequiredDescriptionDefault
license_numberYesOCM license number (e.g. "OCM-CAURD-23-000023", "OCM-PROC-24-000096"), application number, or part of one; a company name also works

Output Schema

ParametersJSON Schema
NameRequiredDescription
brandNoThe brand catalog entry holding this license, when known
foundYesA license record matched exactly
sourceNoAttribution line — CC BY 4.0, cite the row url
licenseNo
messageNo
similarNoClose matches when there is no exact one
licensedYesfound and the license status is Active
dispensaryNoThe directory listing, when the license is a retail dispensary we list
dataUpdatedNoISO timestamp of the feed this result came from: dispensary directory (OCM refresh), deals export, brand-availability export, or review index

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description discloses that partial identifiers return candidates in a 'similar' field)Skip punctuation. It also reveals extra enrichments (matching dispensary listing and brand when available) and special handling for cultivators (grow method), which an agent would not know from the schema alone.

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

Conciseness5/5

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

Three sentences, no filler, with the core lookup scope first, then return details, then flexibility in input. Every clause earns its place.

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 single-parameter read-only lookup with 100% schema coverage, the description covers the input forms, the entity scope, the output fields, and the special cases (partial matches, cultivator grow method). No critical gaps remain for an agent to decide whether to call this tool.

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

Parameters5/5

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

The input schema already describes the parameter comprehensively, but the description adds meaning by enumerating accepted forms: full OCM license numbers, application numbers, partial numbers, and company names. It also gives concrete examples, which materially reduces ambiguity about what value the tool accepts.

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 concrete action ('Look up') on a specific resource (NY OCM cannabis license) and explicitly scopes the full license universe (3,000+ licenses across all license types). It distinguishes itself from shop-only tools by saying 'not just shops' and clarifies its relationship to dispensary listings and brands.

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 clear trigger conditions by saying a partial number, application number, or company name should be used for candidate matching)Skip punctuation. It also names two concrete questions the tool answers ('is this a real licensed NY business', 'who holds this license'). It doesn't explicitly name alternatives like get_dispensary or search_dispensaries, but the 'not just shops' phrasing implies the boundary.

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.

  1. 9 tool updates
    • Changedget_brand1 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"
    • Changedget_deals1 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"
    • Changedget_dispensary1 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"
    • Changedget_market_stats1 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"
    • Changedget_review1 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"
    • Changedsearch_brands1 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"
    • Changedsearch_dispensaries1 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"
    • Changedsearch_reviews1 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"
    • Changedverify_license1 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. 11 tool updates
    • Changedget_brand1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "availability": {
        +      "additionalProperties": true,
        +      "properties": {
        +        "asOf": {
        +          "type": "string"
        +        },
        +        "availableAt": {
        +          "items": {
        +            "additionalProperties": true,
        +            "properties": {
        +              "city": {
        +                "type": "string"
        +              },
        +              "id": {
        +                "type": "string"
        +              },
        +              "name": {
        +                "type": "string"
        +              },
        +              "url": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "id",
        +              "name",
        +              "url"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "byCity": {
        +          "items": {
        +            "additionalProperties": true,
        +            "properties": {
        +              "city": {
        +                "type": "string"
        +              },
        +              "count": {
        +                "type": "number"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "crawledCategories": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "dispensaryCount": {
        +          "description": "Stores stocking the brand",
        +          "type": "number"
        +        },
        +        "listedDispensaries": {
        +          "type": "number"
        +        },
        +        "note": {
        +          "type": "string"
        +        },
        +        "tier": {
        +          "description": "preview | full",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "dispensaryCount",
        +        "availableAt"
        +      ],
        +      "type": "object"
        +    },
        +    "brand": {
        +      "additionalProperties": true,
        +      "properties": {
        +        "certifications": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "childBrands": {
        +          "items": {
        +            "additionalProperties": true,
        +            "properties": {
        +              "growType": {
        +                "type": "string"
        +              },
        +              "name": {
        +                "type": "string"
        +              },
        +              "slug": {
        +                "type": "string"
        +              },
        +              "url": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "description": {
        +          "type": "string"
        +        },
        +        "dispensaryCount": {
        +          "description": "Stores currently stocking the brand",
        +          "type": "number"
        +        },
        +        "founded": {
        +          "type": "number"
        +        },
        +        "growType": {
        +          "description": "indoor | outdoor | mixed-light | combination (from OCM cultivator licenses)",
        +          "type": "string"
        +        },
        +        "headquarters": {
        +          "type": "string"
        +        },
        +        "id": {
        +          "type": "string"
        +        },
        +        "isMSO": {
        +          "type": "boolean"
        +        },
        +        "isMicrobusiness": {
        +          "type": "boolean"
        +        },
        +        "isNewYorkBased": {
        +          "type": "boolean"
        +        },
        +        "licenseNumber": {
        +          "type": "string"
        +        },
        +        "licenseType": {
        +          "type": "string"
        +        },
        +        "name": {
        +          "type": "string"
        +        },
        +        "notableProducts": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "parentBrand": {
        +          "description": "Slug of the house brand that owns this one",
        +          "type": "string"
        +        },
        +        "parentBrandName": {
        +          "type": "string"
        +        },
        +        "parentBrandUrl": {
        +          "type": "string"
        +        },
        +        "productCategories": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "reviews": {
        +          "description": "FindWeedNY reviews of this brand",
        +          "items": {
        +            "additionalProperties": true,
        +            "properties": {
        +              "date": {
        +                "type": "string"
        +              },
        +              "product": {
        +                "type": "string"
        +              },
        +              "productType": {
        +                "type": "string"
        +              },
        +              "rating": {
        +                "type": "number"
        +              },
        +              "thcPct": {
        +                "type": "number"
        +              },
        +              "title": {
        +                "type": "string"
        +              },
        +              "totalTerpenesPct": {
        +                "type": "number"
        +              },
        +              "url": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "shortDescription": {
        +          "type": "string"
        +        },
        +        "slug": {
        +          "type": "string"
        +        },
        +        "tags": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "type": {
        +          "description": "local | national | mso",
        +          "type": "string"
        +        },
        +        "url": {
        +          "type": "string"
        +        },
        +        "website": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "name",
        +        "slug",
        +        "url"
        +      ],
        +      "type": "object"
        +    },
        +    "dataUpdated": {
        +      "description": "ISO timestamp of the underlying directory export",
        +      "type": "string"
        +    },
        +    "found": {
        +      "type": "boolean"
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution line — CC BY 4.0, cite the row url",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "found"
        +  ],
        +  "type": "object"
        +}
    • Changedget_deals2 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Max deals per dispensary, default 6"New value: +"Max deals per dispensary, default 6, cap 10"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "dataUpdated": {
        +      "description": "ISO timestamp of the underlying directory export",
        +      "type": "string"
        +    },
        +    "found": {
        +      "type": "boolean"
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "note": {
        +      "type": "string"
        +    },
        +    "results": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "deals": {
        +            "items": {
        +              "additionalProperties": true,
        +              "properties": {
        +                "brand": {
        +                  "type": "string"
        +                },
        +                "category": {
        +                  "type": "string"
        +                },
        +                "lastSeenAt": {
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                },
        +                "originalPrice": {
        +                  "type": "number"
        +                },
        +                "price": {
        +                  "type": "number"
        +                },
        +                "productUrl": {
        +                  "type": "string"
        +                },
        +                "savingsPct": {
        +                  "type": "number"
        +                },
        +                "strainType": {
        +                  "type": "string"
        +                },
        +                "thcPct": {
        +                  "type": "number"
        +                },
        +                "weight": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "dispensary": {
        +            "additionalProperties": true,
        +            "properties": {
        +              "city": {
        +                "type": "string"
        +              },
        +              "id": {
        +                "type": "string"
        +              },
        +              "name": {
        +                "type": "string"
        +              },
        +              "url": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "id",
        +              "name",
        +              "url"
        +            ],
        +            "type": "object"
        +          },
        +          "promotions": {
        +            "items": {
        +              "additionalProperties": true,
        +              "properties": {
        +                "description": {
        +                  "type": "string"
        +                },
        +                "endDate": {
        +                  "type": "string"
        +                },
        +                "lastSeenAt": {
        +                  "type": "string"
        +                },
        +                "promoType": {
        +                  "type": "string"
        +                },
        +                "startDate": {
        +                  "type": "string"
        +                },
        +                "title": {
        +                  "type": "string"
        +                },
        +                "url": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "totalDeals": {
        +            "type": "number"
        +          },
        +          "totalPromotions": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "dispensary",
        +          "deals",
        +          "promotions"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "source": {
        +      "description": "Attribution line — CC BY 4.0, cite the row url",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_dispensary1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "dataUpdated": {
        +      "description": "ISO timestamp of the underlying directory export",
        +      "type": "string"
        +    },
        +    "dispensary": {
        +      "additionalProperties": true,
        +      "properties": {
        +        "address": {
        +          "type": "string"
        +        },
        +        "amenities": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "city": {
        +          "type": "string"
        +        },
        +        "claimed": {
        +          "type": "boolean"
        +        },
        +        "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"
        +        },
        +        "deliveryZipCodes": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "description": {
        +          "type": "string"
        +        },
        +        "distance": {
        +          "description": "Miles from `near`, when a near point was given",
        +          "type": "number"
        +        },
        +        "geocodeAccuracy": {
        +          "type": "string"
        +        },
        +        "googleRating": {
        +          "type": "number"
        +        },
        +        "googleReviewCount": {
        +          "type": "number"
        +        },
        +        "hours": {
        +          "additionalProperties": true,
        +          "description": "Posted hours by weekday",
        +          "properties": {},
        +          "type": "object"
        +        },
        +        "hoursToday": {
        +          "type": "string"
        +        },
        +        "id": {
        +          "description": "OCM license number (directory id)",
        +          "type": "string"
        +        },
        +        "isDeliveryOnly": {
        +          "type": "boolean"
        +        },
        +        "isMedical": {
        +          "type": "boolean"
        +        },
        +        "isMicrobusiness": {
        +          "type": "boolean"
        +        },
        +        "lastVerified": {
        +          "type": "string"
        +        },
        +        "latitude": {
        +          "type": "number"
        +        },
        +        "licenseExpirationDate": {
        +          "type": "string"
        +        },
        +        "licenseIssueDate": {
        +          "type": "string"
        +        },
        +        "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"
        +    },
        +    "found": {
        +      "type": "boolean"
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution line — CC BY 4.0, cite the row url",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "found"
        +  ],
        +  "type": "object"
        +}
    • Addedget_market_stats
    • Changedget_review1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "dataUpdated": {
        +      "description": "ISO timestamp of the underlying directory export",
        +      "type": "string"
        +    },
        +    "found": {
        +      "type": "boolean"
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "review": {
        +      "additionalProperties": true,
        +      "properties": {
        +        "batch": {
        +          "type": "string"
        +        },
        +        "brand": {
        +          "type": "string"
        +        },
        +        "brandSlug": {
        +          "type": "string"
        +        },
        +        "brandUrl": {
        +          "type": "string"
        +        },
        +        "cannabinoids": {
        +          "items": {
        +            "additionalProperties": true,
        +            "properties": {
        +              "name": {
        +                "type": "string"
        +              },
        +              "pct": {
        +                "type": "number"
        +              }
        +            },
        +            "required": [
        +              "name",
        +              "pct"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "coaUrl": {
        +          "description": "Certificate of analysis",
        +          "type": "string"
        +        },
        +        "cultivation": {
        +          "type": "string"
        +        },
        +        "date": {
        +          "type": "string"
        +        },
        +        "excerpt": {
        +          "type": "string"
        +        },
        +        "price": {
        +          "type": "string"
        +        },
        +        "product": {
        +          "type": "string"
        +        },
        +        "productType": {
        +          "description": "flower | vape | concentrate | edible | accessory | dispensary",
        +          "type": "string"
        +        },
        +        "productUrl": {
        +          "type": "string"
        +        },
        +        "rating": {
        +          "description": "1–5, FindWeedNY's opinion",
        +          "type": "number"
        +        },
        +        "slug": {
        +          "type": "string"
        +        },
        +        "strain": {
        +          "type": "string"
        +        },
        +        "terpenes": {
        +          "items": {
        +            "additionalProperties": true,
        +            "properties": {
        +              "name": {
        +                "type": "string"
        +              },
        +              "pct": {
        +                "type": "number"
        +              }
        +            },
        +            "required": [
        +              "name",
        +              "pct"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "thcPct": {
        +          "description": "Total THC ≈ THCa×0.877 + Δ9, from the COA",
        +          "type": "number"
        +        },
        +        "title": {
        +          "type": "string"
        +        },
        +        "topTerpenes": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "totalTerpenesPct": {
        +          "type": "number"
        +        },
        +        "url": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "slug",
        +        "title",
        +        "rating",
        +        "url"
        +      ],
        +      "type": "object"
        +    },
        +    "source": {
        +      "description": "Attribution line — CC BY 4.0, cite the row url",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "found"
        +  ],
        +  "type": "object"
        +}
    • Removedlicense_lookup
    • Removedmarket_stats
    • Changedsearch_brands3 fields changed
      • addedInput schema / properties / ny_based / description
        Added value: +"Only brands headquartered / grown in New York"
      • addedInput schema / properties / type / description
        Added value: +"Brand type: local (NY), national, or multi-state operator"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "brands": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "certifications": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "dispensaryCount": {
        +            "description": "Stores currently stocking the brand",
        +            "type": "number"
        +          },
        +          "founded": {
        +            "type": "number"
        +          },
        +          "growType": {
        +            "description": "indoor | outdoor | mixed-light | combination (from OCM cultivator licenses)",
        +            "type": "string"
        +          },
        +          "headquarters": {
        +            "type": "string"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "isMSO": {
        +            "type": "boolean"
        +          },
        +          "isMicrobusiness": {
        +            "type": "boolean"
        +          },
        +          "isNewYorkBased": {
        +            "type": "boolean"
        +          },
        +          "licenseNumber": {
        +            "type": "string"
        +          },
        +          "licenseType": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "parentBrand": {
        +            "description": "Slug of the house brand that owns this one",
        +            "type": "string"
        +          },
        +          "productCategories": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "shortDescription": {
        +            "type": "string"
        +          },
        +          "slug": {
        +            "type": "string"
        +          },
        +          "tags": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "type": {
        +            "description": "local | national | mso",
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "name",
        +          "slug",
        +          "url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "dataUpdated": {
        +      "description": "ISO timestamp of the underlying directory export",
        +      "type": "string"
        +    },
        +    "offset": {
        +      "type": "number"
        +    },
        +    "source": {
        +      "description": "Attribution line — CC BY 4.0, cite the row url",
        +      "type": "string"
        +    },
        +    "total": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "total",
        +    "offset",
        +    "brands"
        +  ],
        +  "type": "object"
        +}
    • Changedsearch_dispensaries6 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"
        +}
    • Changedsearch_reviews3 fields changed
      • addedInput schema / properties / cultivation / description
        Added value: +"How the flower was grown, when the review records it"
      • addedInput schema / properties / product_type / description
        Added value: +"Kind of product reviewed"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "dataUpdated": {
        +      "description": "ISO timestamp of the underlying directory export",
        +      "type": "string"
        +    },
        +    "note": {
        +      "type": "string"
        +    },
        +    "offset": {
        +      "type": "number"
        +    },
        +    "reviews": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "brand": {
        +            "type": "string"
        +          },
        +          "brandSlug": {
        +            "type": "string"
        +          },
        +          "brandUrl": {
        +            "type": "string"
        +          },
        +          "coaUrl": {
        +            "description": "Certificate of analysis",
        +            "type": "string"
        +          },
        +          "cultivation": {
        +            "type": "string"
        +          },
        +          "date": {
        +            "type": "string"
        +          },
        +          "excerpt": {
        +            "type": "string"
        +          },
        +          "price": {
        +            "type": "string"
        +          },
        +          "product": {
        +            "type": "string"
        +          },
        +          "productType": {
        +            "description": "flower | vape | concentrate | edible | accessory | dispensary",
        +            "type": "string"
        +          },
        +          "rating": {
        +            "description": "1–5, FindWeedNY's opinion",
        +            "type": "number"
        +          },
        +          "slug": {
        +            "type": "string"
        +          },
        +          "strain": {
        +            "type": "string"
        +          },
        +          "thcPct": {
        +            "description": "Total THC ≈ THCa×0.877 + Δ9, from the COA",
        +            "type": "number"
        +          },
        +          "title": {
        +            "type": "string"
        +          },
        +          "topTerpenes": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "totalTerpenesPct": {
        +            "type": "number"
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "slug",
        +          "title",
        +          "rating",
        +          "url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "source": {
        +      "description": "Attribution line — CC BY 4.0, cite the row url",
        +      "type": "string"
        +    },
        +    "total": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "total",
        +    "offset",
        +    "reviews"
        +  ],
        +  "type": "object"
        +}
    • Addedverify_license
  3. 9 tool updates
    • First observedget_brand
    • First observedget_deals
    • First observedget_dispensary
    • First observedget_review
    • First observedlicense_lookup
    • First observedmarket_stats
    • First observedsearch_brands
    • First observedsearch_dispensaries
    • First observedsearch_reviews

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables querying New York State DMV data including vehicle registrations, EV adoption, offices, road test sites, driving schools, and licensed facilities, with keyless access to public datasets.
    18
    MIT
  • F
    license
    Not graded
    quality
    F
    maintenance
    The owner-verified local business data + service & menu-price layer for AI agents. Owner-authored business profiles where every response carries provenance — verification level, completeness score, freshness timestamps, and upstream sources. * Search & profiles — find businesses by name, category, city, or geo-radius; full profiles with contacts, hours, media, ratings. * Price layer
    -
  • A
    license
    A
    quality
    C
    maintenance
    French marketplace MCP server for artisanal hemp/CBD products. Exposes 10 tools (product search, personalized recommendations, comparison, producer info with geolocation, stock availability, market prices "Bloomberg CBD", complete CBD guides, news, wiki search, full wiki article) + 4 resources (catalog, producers map, CBD reference covering France + 12 EU countries, wiki catalog).
    10
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources