Cannabis Regulatory Intelligence
About
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.
Details
- Author
- apifyforge
- Downloads
- 170
- Categories
- AI
Jump to
- 7 parallel federal data sources queried simultaneously
- Fault-tolerant orchestration with empty array fallback
- Four scoring models with numeric scores and verdicts
- Composite regulatory briefing with weighted coefficients
- Automated actionable recommendations from score thresholds
- MCP‑native transport for standards‑compliant clients
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
Cannabis Regulatory IntelligenceCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
Add the server URL to your MCP client’s configuration (e.g., Claude Desktop, Cursor, Windsurf) using the provided JSON snippet. Then ask natural-language questions about regulatory risk, federal policy, entity verification, or market viability to receive scored responses.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"cannabis regulatory intelligence": {
"cannabis-regulatory-intelligence-mcp": {
"url": "https://ryanclinton--cannabis-regulatory-intelligence-mcp.apify.actor/mcp"
}
}
}
}
McpServers
{
"cannabis-regulatory-intelligence-mcp": {
"url": "https://ryanclinton--cannabis-regulatory-intelligence-mcp.apify.actor/mcp"
}
}
Cannabis Regulatory Intelligence MCP Server
> View on ApifyForge | Use on Apify Store
---
Quick Start
Add to your MCP client (Claude Desktop, Cursor, Windsurf):
{
"mcpServers": {
"cannabis-regulatory-intelligence-mcp": {
"url": "https://ryanclinton--cannabis-regulatory-intelligence-mcp.apify.actor/mcp"
}
}
}
---
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 market parameter 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/sdk v1.12.1 with StreamableHTTPServerTransport over 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
1. 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.json under mcpServers. For Cursor or Windsurf, add it in the MCP settings panel. No code required.
2. 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.
3. 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.
4. 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
```bash
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.
