Cannabis Regulatory Intelligence MCP Server
Cannabis regulatory intelligence for AI agents — this MCP server gives your Claude, GPT, or custom AI agent live access to cannabis compliance data across all 50 US states. It is built for multi-state operators, cannabis investors, compliance attorneys, and ancillary service providers who need structured, scored regulatory answers, not raw document dumps.
Maintenance Pulse
90/100Cost Estimate
How many results do you need?
Pricing
Pay Per Event model. You only pay for what you use.
| Event | Description | Price |
|---|---|---|
| assess_state_regulatory_risk | Federal Register + Congress + CFPB + website monitoring. | $0.10 |
| track_federal_cannabis_policy | Rescheduling bills + DEA/HHS activity + economics. | $0.08 |
| verify_cannabis_entity | OpenCorporates + CFPB multi-state check. | $0.08 |
| analyze_market_viability | BLS + FRED + legislative favorability. | $0.08 |
| monitor_state_enforcement | Enforcement actions + complaints + website changes. | $0.08 |
| score_mso_portfolio_risk | Multi-state operator compliance exposure map. | $0.12 |
| generate_regulatory_briefing | All 7 sources, 4 scoring models, FAVORABLE/DO_NOT_ENTER verdict. | $0.30 |
Example: 100 events = $10.00 · 1,000 events = $100.00
Connect to your AI agent
Add this MCP server to Claude Desktop, Cursor, Windsurf, or any MCP-compatible client.
https://ryanclinton--cannabis-regulatory-intelligence-mcp.apify.actor/mcp{
"mcpServers": {
"cannabis-regulatory-intelligence-mcp": {
"url": "https://ryanclinton--cannabis-regulatory-intelligence-mcp.apify.actor/mcp"
}
}
}Documentation
Cannabis regulatory intelligence for AI agents — this MCP server gives your Claude, GPT, or custom AI agent live access to cannabis compliance data across all 50 US states. It is built for multi-state operators, cannabis investors, compliance attorneys, and ancillary service providers who need structured, scored regulatory answers, not raw document dumps.
The server orchestrates 7 federal data sources in parallel: Federal Register rulemakings, congressional legislation, OpenCorporates entity registries, BLS employment data, FRED economic indicators, CFPB consumer complaints, and website change monitoring for state agency portals. Four scoring models synthesize these signals into numeric scores and a final FAVORABLE / PROCEED_WITH_CAUTION / HIGH_RISK / DO_NOT_ENTER verdict — delivered in seconds, at $0.045 per tool call.
What data can you access?
| Data Point | Source | Example |
|---|---|---|
| 📋 Federal cannabis rulemakings and DEA/HHS enforcement actions | Federal Register | "DEA Proposed Rule: Cannabis Scheduling Review — comment period open" |
| 🏛️ Cannabis legislation status (SAFE Banking, MORE Act, rescheduling bills) | Congress Bill Search | "SAFER Banking Act — advanced past Senate Banking Committee" |
| 🏢 Business entity registrations, corporate structure, dissolved entities | OpenCorporates | "Veridian Holdings LLC — registered in CO, AZ, MI, NJ, FL (3 inactive)" |
| 👷 State employment rates, wage levels, consumer spending capacity | BLS Economic Data | "IL leisure/hospitality employment: 594K — wages up 4.2% YoY" |
| 📊 GDP, consumer spending, state cannabis tax revenue | FRED Economic Data | "CO GDP: $422B — cannabis excise tax: $282M" |
| 🔔 State cannabis agency website policy updates and licensing changes | Website Change Monitor | "CO MED licensing portal updated — new dispensary cap rules" |
| 📩 Financial services consumer complaints tied to cannabis entities | CFPB Complaints | "14 complaints against Green Leaf Financial Services" |
| 🔢 State regulatory risk score (0-100) with risk level label | Composite scoring model | score: 72, riskLevel: "HIGH" |
| 📈 Federal rescheduling momentum score (0-100) | Congressional + DEA signals | momentum: "BUILDING", score: 54 |
| 🗺️ MSO compliance exposure score (0-100) across all jurisdictions | Multi-jurisdiction mapping | exposureLevel: "ELEVATED", jurisdictionCount: 8 |
| ✅ Market viability score (0-100) with viability level | BLS + FRED + legislative signals | viabilityLevel: "ATTRACTIVE", score: 68 |
| 🟡 Composite regulatory briefing with final verdict | All 4 models weighted | verdict: "PROCEED_WITH_CAUTION", compositeScore: 61 |
Why use Cannabis Regulatory Intelligence MCP Server?
Cannabis compliance research is expensive, fragmented, and time-consuming. A compliance analyst manually checking the Federal Register, Congress.gov, OpenCorporates, BLS, FRED, CFPB, and individual state agency sites for a single entity takes 3-4 hours — and that work becomes stale within days as the regulatory environment shifts. Multiplied across an MSO portfolio or a fund's target states, the cost is prohibitive.
This MCP server automates the entire process. Connect it once to your AI agent, and every query about state risk, federal policy direction, entity verification, or market viability runs against live data from 7 government sources simultaneously — with scoring, signals, and recommendations included in the response.
- Scheduling — run weekly compliance briefings for your entire portfolio using Apify's built-in scheduling, with no manual intervention
- API access — trigger regulatory queries from Python, JavaScript, or any HTTP client via the Apify API or direct MCP endpoint
- Proxy rotation — all downstream data queries use Apify's proxy infrastructure, so no federal data source ever throttles your requests
- Monitoring — receive Slack or email alerts when a run produces a HIGH_RISK or DO_NOT_ENTER verdict, or when a run fails unexpectedly
- Integrations — route results to Zapier, Make, Google Sheets, HubSpot, or any webhook endpoint for compliance workflow automation
Features
- 7 parallel data sources — Federal Register, Congress, OpenCorporates, BLS, FRED, CFPB, and Website Change Monitor queried simultaneously using
Promise.allSettled(), not sequentially - Fault-tolerant orchestration — a failed individual source returns an empty array to the scoring model rather than blocking the entire response; tool calls never hang on a single slow upstream
- State Regulatory Risk Score (0-100) — bounded sub-scores: Federal Register enforcement actions (max 35 pts), congressional activity (max 25 pts), CFPB complaints (max 20 pts), and regulatory website changes (max 20 pts)
- Federal Rescheduling Momentum Model — scores DEA/HHS rulemaking volume, congressional rescheduling bills (SAFE Banking, MORE Act, STATES Act), advanced bill status, and FRED cannabis tax revenue data; returns STALLED / SLOW / BUILDING / STRONG / IMMINENT
- MSO Compliance Exposure Map — multi-jurisdiction corporate structure analysis using OpenCorporates: counts entities, jurisdictions, dissolved/inactive entities, and flags presence in states where cannabis remains federally illegal, using a hardcoded 3-tier state classification (22 recreational-legal, 13 medical-only, 10 illegal)
- Market Entry Viability Score (0-100) — positive signal model combining BLS employment and wage strength (max 30 pts), FRED GDP and consumer indicators (max 30 pts), legislative favorability score (max 25 pts), and market openness (max 15 pts)
- Composite regulatory briefing — all 4 models combined with weighted coefficients: market viability 30% + federal momentum 20% + state risk inverted 25% + MSO exposure inverted 25%
- Override logic for extreme risk — the briefing automatically downgrades to DO_NOT_ENTER when MSO exposure reaches CRITICAL or state regulatory risk reaches EXTREME, regardless of composite arithmetic
- Automated actionable recommendations — guidance generated from score thresholds: when to engage state cannabis counsel, when to monitor federal rescheduling, when to conduct a multi-state compliance audit
- Market segment filtering — all relevant tools accept an optional
marketparameter to scope queries to recreational, medical, or hemp segments - Spending limit protection — every tool call checks
Actor.charge()before querying; returns a structured error if the per-run budget is exceeded without consuming credits for a failed call - MCP-native transport — uses
@modelcontextprotocol/sdkv1.12.1 withStreamableHTTPServerTransportover persistent HTTP; compatible with Claude Desktop, Cursor, Windsurf, Cline, and any standards-compliant MCP client - Apify Standby mode — runs persistently on the actor-assigned port with no cold start on each query, keeping latency low for high-frequency compliance monitoring workflows
Use cases for cannabis regulatory intelligence
Multi-state operator compliance management
Cannabis MSOs operating in 5+ states face a compliance burden that compounds with each new license. Regulatory changes in one state can trigger cascading reporting requirements in others, and dissolved subsidiaries left uncleaned create ongoing exposure. Use score_mso_portfolio_risk to map every registered entity across OpenCorporates, surface dissolved entities, and flag operations in states where cannabis legality is uncertain. Schedule weekly to catch new enforcement actions before your next board meeting.
Cannabis investment due diligence
Private equity firms, family offices, and cannabis-focused funds use analyze_market_viability to score target states before capital deployment — checking BLS employment strength, FRED GDP and consumer spending capacity, and the legislative environment for favorable policy trends. Combine with verify_cannabis_entity to validate that an acquisition target's corporate structure matches what is disclosed in the pitch deck, checking entity count, jurisdiction coverage, and inactive registrations against public records.
Compliance attorney workflow automation
Regulatory attorneys tracking SAFE Banking, the MORE Act, or DEA rescheduling activity use track_federal_cannabis_policy to get a scored momentum reading from live congressional and Federal Register data rather than manually scanning Congress.gov and the Federal Register daily. Pair with monitor_state_enforcement to track enforcement actions and complaint patterns for specific clients and provide early warning before a regulatory escalation.
Cannabis market entry analysis
Ancillary service providers — POS software vendors, security firms, packaging suppliers, financial institutions considering cannabis banking — use analyze_market_viability before committing to a new state market. The BLS employment and wage signals indicate whether consumer spending capacity supports a viable cannabis retail market, while the legislative favorability score identifies states where market conditions are improving.
Regulatory briefing generation for boards and investors
Use generate_regulatory_briefing to produce a complete compliance memo for a named entity or state market in a single API call. The output includes all four sub-scores, all signals, a composite score, a final verdict, and actionable recommendations — structured JSON that maps directly into a board presentation or investor update without further manual formatting.
Enforcement and complaint monitoring
Compliance managers at plant-touching operators use monitor_state_enforcement with a specific entity name to detect whether their company or a competitor appears in Federal Register enforcement actions or CFPB complaint data. Early detection of complaint patterns allows proactive response before a formal regulatory escalation.
How to use cannabis regulatory intelligence in your AI agent
- Connect the MCP server — Add the server URL to your AI client's MCP configuration. For Claude Desktop, paste the endpoint URL into your
claude_desktop_config.jsonundermcpServers. For Cursor or Windsurf, add it in the MCP settings panel. No code required. - Ask a natural-language question — Type "What is the regulatory risk score for California recreational cannabis?" or "Generate a full briefing for Curaleaf in Florida." Your AI agent selects the right tool and formats the input automatically.
- Review structured scores and signals — The response includes numeric scores, risk level labels, specific signals (e.g., "5 enforcement actions — active regulatory crackdown"), and actionable recommendations.
- Export or act on results — Copy the JSON to a compliance tracker, trigger a webhook to push HIGH_RISK verdicts to your legal team in Slack, or schedule a weekly automated run via Apify's scheduling interface.
MCP tools
| Tool | Price | Description |
|---|---|---|
assess_state_regulatory_risk | $0.045 | State risk score (0-100): Federal Register rules, enforcement actions, CFPB complaints, regulatory website changes. Returns riskLevel: LOW to EXTREME. |
track_federal_cannabis_policy | $0.045 | Federal policy tracking: rescheduling bills, DEA/HHS activity, SAFE Banking status, FRED economic data. Returns momentum: STALLED to IMMINENT. |
verify_cannabis_entity | $0.045 | Entity verification: corporate structure, multi-state registrations, inactive entities, CFPB complaints. Returns MSO compliance exposure score. |
analyze_market_viability | $0.045 | Market viability by state: BLS employment, FRED GDP, legislative favorability. Returns viabilityLevel: NON_VIABLE to PRIME. |
monitor_state_enforcement | $0.045 | Enforcement monitoring: Federal Register penalties, CFPB complaints, regulatory website changes for a state or named entity. |
score_mso_portfolio_risk | $0.045 | MSO portfolio risk: multi-jurisdiction compliance exposure, dissolved entities, illegal-state presence, structural opacity. Returns exposureLevel. |
generate_regulatory_briefing | $0.045 | Full briefing: all 7 sources, all 4 scoring models, composite score, FAVORABLE / PROCEED_WITH_CAUTION / HIGH_RISK / DO_NOT_ENTER verdict. |
Tool parameters
| Tool | Parameter | Type | Required | Description |
|---|---|---|---|---|
assess_state_regulatory_risk | state | string | Yes | US state name or abbreviation (e.g., "California", "CO") |
assess_state_regulatory_risk | market | string | No | Market segment: recreational, medical, or hemp |
track_federal_cannabis_policy | topic | string | No | Specific policy topic: rescheduling, banking, interstate commerce |
verify_cannabis_entity | entity | string | Yes | Cannabis company or MSO name |
verify_cannabis_entity | jurisdiction | string | No | State or jurisdiction filter to narrow entity search |
analyze_market_viability | state | string | Yes | US state or region |
analyze_market_viability | market | string | No | Market segment: recreational, medical, or hemp |
monitor_state_enforcement | state | string | No | State to monitor; omit for a national enforcement scan |
monitor_state_enforcement | entity | string | No | Specific entity name to track alongside state monitoring |
score_mso_portfolio_risk | mso | string | Yes | Multi-state operator name |
generate_regulatory_briefing | entity | string | Yes | Cannabis company, MSO, or state market name |
generate_regulatory_briefing | state | string | No | US state for market context within the briefing |
Tool call examples
Score state regulatory risk for a specific market segment:
{
"tool": "assess_state_regulatory_risk",
"arguments": {
"state": "California",
"market": "recreational"
}
}
Track federal rescheduling momentum:
{
"tool": "track_federal_cannabis_policy",
"arguments": {
"topic": "rescheduling"
}
}
Generate a full regulatory briefing for an MSO:
{
"tool": "generate_regulatory_briefing",
"arguments": {
"entity": "Pinnacle Cannabis Group",
"state": "Illinois"
}
}
Output example
Representative response from generate_regulatory_briefing for a mid-size multi-state operator:
{
"entity": "Pinnacle Cannabis Group",
"compositeScore": 61,
"verdict": "PROCEED_WITH_CAUTION",
"stateRegulatoryRisk": {
"score": 44,
"regulationCount": 8,
"enforcementActions": 2,
"complaintCount": 7,
"riskLevel": "ELEVATED",
"signals": [
"2 enforcement actions — active regulatory crackdown",
"7 consumer complaints — compliance friction"
]
},
"federalRescheduling": {
"score": 58,
"billCount": 4,
"regulationCount": 2,
"momentum": "BUILDING",
"signals": [
"4 rescheduling/legalization bills in Congress",
"2 DEA/HHS rescheduling-related regulations"
]
},
"msoCompliance": {
"score": 38,
"entityCount": 11,
"jurisdictionCount": 6,
"inactiveEntities": 3,
"exposureLevel": "ELEVATED",
"signals": [
"Operations across 6 jurisdictions — complex multi-state compliance",
"3 dissolved/inactive entities — corporate housekeeping issues"
]
},
"marketViability": {
"score": 68,
"economicStrength": 22,
"employmentGrowth": 21,
"viabilityLevel": "ATTRACTIVE",
"signals": [
"Strong employment and wage indicators — robust consumer market",
"2 favorable cannabis bills — legislative tailwind"
]
},
"allSignals": [
"2 enforcement actions — active regulatory crackdown",
"7 consumer complaints — compliance friction",
"4 rescheduling/legalization bills in Congress",
"2 DEA/HHS rescheduling-related regulations",
"Operations across 6 jurisdictions — complex multi-state compliance",
"3 dissolved/inactive entities — corporate housekeeping issues",
"Strong employment and wage indicators — robust consumer market",
"2 favorable cannabis bills — legislative tailwind"
],
"recommendations": [
"Monitor federal rescheduling — may unlock banking and interstate commerce",
"Conduct state-by-state compliance audit for multi-state operations",
"Clean up inactive corporate entities before regulatory review"
]
}
Output fields
| Field | Type | Description |
|---|---|---|
entity | string | The entity name or state market queried |
compositeScore | number | 0-100 weighted composite score: viability 30% + federal momentum 20% + state risk inverted 25% + MSO exposure inverted 25% |
verdict | string | FAVORABLE / PROCEED_WITH_CAUTION / HIGH_RISK / DO_NOT_ENTER |
stateRegulatoryRisk.score | number | 0-100 state regulatory risk score |
stateRegulatoryRisk.regulationCount | number | Total Federal Register entries found |
stateRegulatoryRisk.enforcementActions | number | Count of enforcement/penalty actions in Federal Register |
stateRegulatoryRisk.complaintCount | number | CFPB consumer complaint count |
stateRegulatoryRisk.riskLevel | string | LOW / MODERATE / ELEVATED / HIGH / EXTREME |
stateRegulatoryRisk.signals | array | Human-readable descriptions of the signals driving the risk score |
federalRescheduling.score | number | 0-100 rescheduling momentum score |
federalRescheduling.billCount | number | Count of rescheduling/legalization bills found in Congress |
federalRescheduling.regulationCount | number | DEA/HHS rescheduling-related Federal Register entries |
federalRescheduling.momentum | string | STALLED / SLOW / BUILDING / STRONG / IMMINENT |
federalRescheduling.signals | array | Congressional and regulatory momentum signal descriptions |
msoCompliance.score | number | 0-100 MSO compliance exposure score |
msoCompliance.entityCount | number | Total corporate entities found in OpenCorporates |
msoCompliance.jurisdictionCount | number | Count of distinct jurisdictions across all entities |
msoCompliance.inactiveEntities | number | Count of dissolved or inactive corporate entities |
msoCompliance.exposureLevel | string | LOW / MODERATE / ELEVATED / HIGH / CRITICAL |
msoCompliance.signals | array | Corporate structure and jurisdiction risk signal descriptions |
marketViability.score | number | 0-100 market viability score — higher means more viable |
marketViability.economicStrength | number | FRED economic indicator sub-score |
marketViability.employmentGrowth | number | BLS employment and wage strength sub-score |
marketViability.viabilityLevel | string | NON_VIABLE / MARGINAL / VIABLE / ATTRACTIVE / PRIME |
marketViability.signals | array | Economic and legislative market viability signal descriptions |
allSignals | array | All signals from all four scoring models combined in order |
recommendations | array | Actionable compliance guidance generated from score thresholds |
How much does it cost to run cannabis regulatory intelligence queries?
This MCP server uses pay-per-event pricing — every tool call costs $0.045. All 7 tools share the same flat rate. Platform compute is included. There is no monthly subscription.
| Scenario | Tool calls | Cost per call | Total cost |
|---|---|---|---|
| Quick test — single state risk check | 1 | $0.045 | $0.045 |
| Weekly check — 5 state scans | 5 | $0.045 | $0.23 |
| MSO portfolio review — 20 tool calls | 20 | $0.045 | $0.90 |
| Monthly full briefings — 50 calls | 50 | $0.045 | $2.25 |
| Enterprise compliance automation — 500 calls | 500 | $0.045 | $22.50 |
You can set a maximum spending limit per run to control costs. The actor stops when your budget is reached and returns a structured error for the current call — all previous results in the run are preserved.
Compare this to dedicated cannabis compliance platforms like CannaRegs or cannabis-specialized legal databases that charge $300-800/month with annual contract commitments. With this MCP server, most compliance teams spend under $10/month with full programmatic control and no lock-in.
How to connect this MCP server
Claude Desktop
Add the server to your claude_desktop_config.json:
{
"mcpServers": {
"cannabis-regulatory": {
"url": "https://cannabis-regulatory-intelligence-mcp.apify.actor/mcp",
"headers": {
"Authorization": "Bearer YOUR_APIFY_TOKEN"
}
}
}
}
Cursor / Windsurf / Cline
Add the MCP endpoint in your editor's MCP settings panel:
URL: https://cannabis-regulatory-intelligence-mcp.apify.actor/mcp
Auth: Bearer YOUR_APIFY_TOKEN
Python
import requests
import json
response = requests.post(
"https://cannabis-regulatory-intelligence-mcp.apify.actor/mcp",
headers={
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN"
},
json={
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "generate_regulatory_briefing",
"arguments": {
"entity": "Trulieve",
"state": "Florida"
}
},
"id": 1
}
)
result = response.json()
briefing = json.loads(result["result"]["content"][0]["text"])
print(f"Verdict: {briefing['verdict']} (composite score: {briefing['compositeScore']})")
for rec in briefing["recommendations"]:
print(f" - {rec}")
JavaScript
const response = await fetch(
"https://cannabis-regulatory-intelligence-mcp.apify.actor/mcp",
{
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN",
},
body: JSON.stringify({
jsonrpc: "2.0",
method: "tools/call",
params: {
name: "assess_state_regulatory_risk",
arguments: {
state: "Illinois",
market: "recreational",
},
},
id: 1,
}),
}
);
const result = await response.json();
const data = JSON.parse(result.result.content[0].text);
console.log(`IL Regulatory Risk: ${data.stateRegulatoryRisk.score}/100 (${data.stateRegulatoryRisk.riskLevel})`);
for (const signal of data.stateRegulatoryRisk.signals) {
console.log(` Signal: ${signal}`);
}
cURL
# Assess state regulatory risk
curl -X POST "https://cannabis-regulatory-intelligence-mcp.apify.actor/mcp" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "assess_state_regulatory_risk",
"arguments": {
"state": "New York",
"market": "recreational"
}
},
"id": 1
}'
# Generate a full regulatory briefing for an MSO
curl -X POST "https://cannabis-regulatory-intelligence-mcp.apify.actor/mcp" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "generate_regulatory_briefing",
"arguments": {
"entity": "Green Thumb Industries",
"state": "Illinois"
}
},
"id": 2
}'
How Cannabis Regulatory Intelligence MCP works
Parallel data orchestration
When a tool call arrives, runActorsParallel() in actor-client.ts fans out to 3-7 downstream Apify actors simultaneously using Promise.allSettled(). Each downstream actor runs with a 256 MB memory budget and a 120-second timeout. Failed individual source queries return an empty array to the scoring model rather than throwing — the scoring models receive empty arrays for any failed source and compute accordingly. This design ensures the MCP never hangs on a single slow data source and always returns a scored result.
The 7 downstream actors and their hard-coded Apify IDs: Federal Register Search (8bZkbWKlXQrDq0ZgK), Congress Bill Search (9fFHwTkD3V1HOyhYd), OpenCorporates Search (x0a1Q4g0MLc7h15Im), BLS Economic Data (7IoF52qtM0SrQcCDG), FRED Economic Data (gz0VOFSLZkFwhqOS8), Website Change Monitor (qcxKU2ReRjP5NmlZR), and CFPB Consumer Complaints (OuMDkYU3IROUS0AEj).
Scoring model architecture
The four scoring models in scoring.ts use bounded sub-scores with hard maximums to prevent any single data signal from dominating the composite. The State Regulatory Risk model caps enforcement action contribution at 35 points, congressional activity at 25, CFPB complaints at 20, and website changes at 20 — applied via Math.min() at every sub-score boundary.
The MSO Compliance model classifies each corporate jurisdiction found in OpenCorporates against a hardcoded legal status map: 22 recreational-legal states, 13 medical-only states, and 10 states where cannabis remains illegal. An entity registered in Idaho (illegal) contributes 8 points of illegal-state risk; an entity in Colorado (recreational-legal) contributes 0. Inactive or dissolved entities add both a ratio-based penalty and a per-entity penalty.
The composite briefing applies weighted coefficients: market viability at 30% (positive signal), federal rescheduling momentum at 20% (positive), state regulatory risk at 25% inverted (lower risk = higher composite), and MSO exposure at 25% inverted. Two override conditions then apply: a CRITICAL MSO exposure or EXTREME state risk forces DO_NOT_ENTER regardless of composite arithmetic.
MCP server transport
The server uses StreamableHTTPServerTransport from @modelcontextprotocol/sdk v1.12.1. A new McpServer instance is created per POST request to /mcp, connected to a fresh transport instance, and torn down when the HTTP connection closes via the res.on('close') handler. The server runs in Apify Standby mode on ACTOR_STANDBY_PORT (default 8080), keeping it persistently alive for MCP client connections with no cold-start latency on each query.
Tips for best results
-
Use
generate_regulatory_briefingfor new market entry decisions. It runs all 7 data sources and all 4 scoring models in one call at the same $0.045 price as any other tool. The composite verdict and recommendations are more actionable than running four individual tools separately — and cost the same. -
Scope to a market segment for cleaner signals. Adding
"market": "recreational"or"market": "hemp"narrows Federal Register and Congress searches to segment-specific regulatory activity, reducing noise from unrelated cannabis policy areas. -
Run
score_mso_portfolio_riskbeforeverify_cannabis_entity. The portfolio tool gives you the full entity count and jurisdiction map. Use specific jurisdiction names from that output to run targetedverify_cannabis_entitycalls with ajurisdictionfilter on high-risk states only. -
Set a spending limit on automated runs. When scheduling daily or weekly compliance monitoring for a large portfolio, set
maxTotalChargeUsdin your run configuration. A $5/run budget covers 111 tool calls — enough for most portfolio scans with a hard cost ceiling. -
Interpret momentum scores directionally, not as probability. A BUILDING score (40-59) means congressional activity is increasing but no floor vote is imminent. A STRONG score (60-79) means bills have advanced past committee. Use it as a trend indicator for briefings, not a prediction of legal outcomes.
-
Cross-reference CFPB complaint counts with entity verification. High complaint counts in
monitor_state_enforcementwithout a corresponding entity inverify_cannabis_entitysuggests the company may operate under a different registered name — a signal worth pursuing in due diligence. -
Export briefing JSON to your compliance tracker via webhook. The structured
generate_regulatory_briefingoutput maps cleanly to a spreadsheet or CRM record. Use Apify's webhook integration to POST results to a Google Sheet or HubSpot automatically after each run. -
Combine with Regulatory Change Tracker for event-driven scoring. Configure the Regulatory Change Tracker to watch state cannabis agency websites, then trigger
assess_state_regulatory_riskautomatically when a change is detected — giving you on-demand scoring tied to real regulatory events rather than a fixed schedule.
Combine with other Apify actors
| Actor | How to combine |
|---|---|
| Regulatory Change Tracker | Watch state cannabis agency websites for policy changes; trigger assess_state_regulatory_risk automatically when changes are detected for event-driven compliance scoring |
| SEC EDGAR Filing Analyzer | Cross-reference cannabis MSO financial disclosures with score_mso_portfolio_risk output to validate that SEC-disclosed risk factors match the live compliance scoring |
| Company Deep Research | Run after verify_cannabis_entity to enrich the corporate structure with news coverage, executive history, and press mentions for a complete due diligence package |
| Litigation Risk Report | Add civil litigation exposure to the compliance picture for any high-exposure entity surfaced by score_mso_portfolio_risk |
| Startup Due Diligence | Combine with analyze_market_viability for a joint market + company assessment of early-stage cannabis investment targets |
| WHOIS Domain Lookup | Confirm a cannabis company's web presence aligns with its registered corporate entities when verifying MSO structure |
| Federal Contract Intelligence | Identify cannabis-adjacent government contractors who may face federal compliance conflicts; cross-reference with entity verification output |
Limitations
- No real-time state license database access. Most state cannabis licensing databases do not expose public APIs. This server scores regulatory risk using federal proxies (Federal Register, Congress, CFPB), not direct state licensing system queries.
- Federal Register data is published retrospectively. Proposed rules appear only after formal notice-and-comment procedures begin. Informal regulatory guidance, enforcement letters, and agency communications before Federal Register publication are not captured.
- OpenCorporates coverage varies by jurisdiction. Some states have sparse corporate registry data in OpenCorporates. For those states,
verify_cannabis_entitymay return fewer entities than actually exist, which can understate MSO compliance exposure scores. - CFPB complaints reflect financial services friction, not cannabis enforcement directly. Complaint counts are used as a proxy for compliance friction in cannabis-adjacent banking relationships. A high complaint count does not necessarily indicate direct regulatory enforcement against the entity.
- The rescheduling momentum score is not a legal opinion. The federal rescheduling score reflects the volume and status of congressional and regulatory activity. It does not predict legal outcomes and does not constitute legal advice.
- Website Change Monitor depends on pre-indexed sites. The tool tracks changes on sites already in the Website Change Monitor actor's dataset. New state agency sites not yet indexed will not contribute to regulatory change signals.
- Market viability scores assume continued state-level legality. If a state reversed its legalization status, the viability model would not update until new BLS and FRED data reflecting the change entered the source feeds.
- All tool calls consume charges even if data sources return sparse results. The charge event fires when the tool call begins. Running queries for very niche entity names or obscure topics may return little data but still incur the per-call cost.
Integrations
- Zapier — trigger weekly state risk scans and push HIGH_RISK or DO_NOT_ENTER verdicts to a compliance task management system or legal team inbox
- Make — automate MSO portfolio risk scoring on a schedule, branching on verdict to send differentiated alerts to legal, compliance, and executive teams
- Google Sheets — export regulatory briefing JSON into a live compliance dashboard that tracks all active state markets and flags changes over time
- Apify API — call tools programmatically from internal compliance systems, CRM-triggered due diligence workflows, or portfolio monitoring pipelines
- Webhooks — route HIGH_RISK or DO_NOT_ENTER verdicts to Slack, PagerDuty, or a legal team email automatically after each run
- LangChain / LlamaIndex — expose cannabis regulatory intelligence as a retrieval tool in RAG pipelines for compliance Q&A systems, legal research assistants, or investment analysis agents
Troubleshooting
-
Verdict is DO_NOT_ENTER despite a state that appears favorable. Check the
msoCompliance.exposureLevelfield. The briefing model overrides the composite score to DO_NOT_ENTER when MSO exposure reaches CRITICAL regardless of other sub-scores. Runverify_cannabis_entityseparately to inspect the specific entities and jurisdictions driving the high exposure rating. -
All scores are zero or very low. The underlying data sources returned no results for the query. Verify the entity name spelling and try alternate forms (e.g., "Green Thumb" instead of "Green Thumb Industries LLC"). For state queries, use the full state name ("California" not "Cali"). If the entity is newly formed, its OpenCorporates and CFPB records may be sparse.
-
Tool call returns a spending limit error. Your run has reached its configured
maxTotalChargeUsdbudget. Increase the limit in your Apify run configuration or start a new run. Results from earlier tool calls within the same run are preserved in the dataset. -
Federal rescheduling momentum shows STALLED despite active news coverage. The momentum model scores based on Federal Register entries and Congress bill status, not news sentiment or reported agency statements. If DEA activity is in early informal stages before Federal Register publication, the model will show lower momentum than media coverage suggests. The score reflects official documented activity.
-
OpenCorporates returns few entities for a known MSO. MSOs often operate under numerous subsidiaries with non-obvious names. Try the parent holding company name, a state-specific subsidiary name (e.g., "Pinnacle Cannabis CO LLC"), or the consumer brand name as separate queries.
Responsible use
- This server accesses only publicly available US government databases and public corporate registries (Federal Register, Congress.gov, BLS.gov, FRED, CFPB, OpenCorporates).
- Cannabis regulatory data reflects laws that vary by jurisdiction. Scores and verdicts are analytical screening tools, not legal opinions. Consult qualified cannabis counsel for compliance decisions.
- Comply with applicable privacy laws when using entity data in due diligence or business decisions.
- Do not use extracted data to facilitate illegal cannabis transactions in jurisdictions where cannabis remains prohibited.
- For guidance on data use legality, see Apify's guide.
FAQ
How many cannabis regulatory tool calls can I make in one run?
There is no hard cap on tool calls per run. Set a maxTotalChargeUsd spending limit per run to control costs. At $0.045 per call, a $5 budget covers 111 tool calls — enough to scan all 50 states or generate briefings for a full MSO portfolio in a single automated run.
Does this MCP server track state-by-state cannabis licensing directly? Not directly. Most state cannabis licensing databases do not expose public APIs. The server scores state regulatory risk using federal proxies: Federal Register enforcement actions, congressional activity, CFPB complaint patterns, and state agency website changes. For raw license counts, check your state's cannabis control board website.
How current is the cannabis regulatory intelligence data? Federal Register and Congress data is fetched live at query time from the source APIs. FRED and BLS data reflects the latest available government release. There is no caching layer — every tool call queries the live data source, so results reflect the regulatory environment at the moment you call the tool.
Can I track SAFE Banking Act progress with this MCP server?
Yes. Use track_federal_cannabis_policy with "topic": "banking". The tool queries Congress for bills matching "cannabis banking" and "SAFE banking," scores their advancement status, and returns a momentum reading based on whether any have passed committee or floor votes.
How does the cannabis regulatory composite score work? The composite score weights four sub-models: market viability (30%), federal rescheduling momentum (20%), state regulatory risk inverted (25%), and MSO compliance exposure inverted (25%). Two override conditions apply: a CRITICAL MSO exposure or EXTREME state risk forces DO_NOT_ENTER regardless of the composite arithmetic result.
Is it legal to use this data for cannabis business decisions? All data sources are publicly available US government databases and public corporate registries. There is no scraping of restricted systems. For guidance on data use legality, see Apify's guide. This MCP server does not constitute legal advice — consult qualified cannabis counsel for compliance decisions.
How is this different from CannaRegs or other cannabis compliance databases? CannaRegs and similar platforms provide curated human-reviewed state regulatory content at $300-800/month with long-term contracts. This MCP server provides programmatic access to live federal data sources at $0.045 per query with no subscription, designed for AI agent workflows and automated screening at scale. The two complement each other: this server is better for automated portfolio monitoring and scoring; curated platforms are better for reading full regulatory text.
Can I analyze hemp and CBD separately from THC cannabis?
Yes. Pass "market": "hemp" to any state risk or viability tool. This scopes Federal Register and Congress queries to hemp-specific regulatory activity, which operates under a different federal framework (2018 Farm Bill vs. Controlled Substances Act) and carries different risk profiles.
What does the DO_NOT_ENTER verdict mean exactly? DO_NOT_ENTER is returned in three cases: (a) the composite score falls below 25, (b) MSO compliance exposure reaches CRITICAL (score 80+), or (c) state regulatory risk reaches EXTREME (score 80+). Conditions (b) and (c) are hard overrides — even a high-viability market returns DO_NOT_ENTER if the entity has critical structural compliance exposure.
Can I schedule automated cannabis compliance checks weekly?
Yes. The Apify platform supports scheduling runs at any interval (daily, weekly, custom cron). Configure a scheduled task that calls score_mso_portfolio_risk or monitor_state_enforcement for your portfolio, then route HIGH_RISK or DO_NOT_ENTER verdicts to a Slack channel or email via webhook.
How accurate is the MSO compliance exposure score? The score is based on OpenCorporates corporate registry data, which covers 140+ jurisdictions but has variable completeness by state. The model is calibrated to flag structural complexity, entity hygiene issues (dissolved/inactive entities), and high-risk jurisdiction presence. It is a screening tool designed to identify entities warranting deeper manual review, not a definitive compliance audit replacement.
Can I integrate this with a LangChain or LlamaIndex pipeline?
Yes. The server exposes a standard MCP endpoint at https://cannabis-regulatory-intelligence-mcp.apify.actor/mcp. Any MCP-compatible client library can connect and call tools as part of a larger AI pipeline, including LangChain and LlamaIndex integrations. See Apify's integration docs for setup guidance.
Help us improve
If you encounter issues, you can help us debug faster by enabling run sharing in your Apify account:
- Go to Account Settings > Privacy
- Enable Share runs with public Actor creators
This lets us see your run details when something goes wrong, so we can fix issues faster. Your data is only visible to the actor developer, not publicly.
Support
Found a bug or have a feature request? Open an issue in the Issues tab on this actor's page. For custom solutions or enterprise integrations — including custom state compliance models, additional data sources, or private deployment options — reach out through the Apify platform.
How it works
Configure
Set your parameters in the Apify Console or pass them via API.
Run
Click Start, trigger via API, webhook, or set up a schedule.
Get results
Download as JSON, CSV, or Excel. Integrate with 1,000+ apps.
Use cases
Sales Teams
Build targeted lead lists with verified contact data.
Marketing
Research competitors and identify outreach opportunities.
Data Teams
Automate data collection pipelines with scheduled runs.
Developers
Integrate via REST API or use as an MCP tool in AI workflows.
Related actors
Bulk Email Verifier
Verify email deliverability at scale. MX record validation, SMTP mailbox checks, disposable and role-based detection, catch-all flagging, and confidence scoring. No external API costs.
GitHub Repository Search
Search GitHub repositories by keyword, language, topic, stars, forks. Sort by stars, forks, or recently updated. Returns metadata, topics, license, owner info, URLs. Free API, optional token for higher limits.
Website Content to Markdown
Convert any website to clean Markdown for RAG pipelines, LLM training, and AI apps. Crawls pages, strips boilerplate, preserves headings, tables, and code blocks. GFM support.
Website Tech Stack Detector
Detect 100+ web technologies on any website. Identifies CMS, frameworks, analytics, marketing tools, chat widgets, CDNs, payment systems, hosting, and more. Batch-analyze multiple sites with version detection and confidence scoring.
Ready to try Cannabis Regulatory Intelligence MCP Server?
Start for free on Apify. No credit card required.
Open on Apify Store