State controlled-substance scheduling of xylazine and tianeptine
For each US state that has acted, the controlled-substance schedule it assigns to substances that are NOT federally scheduled: xylazine and tianeptine — sourced from the state's own statute or administrative rule. Answers 'is tianeptine legal in [state]', 'is xylazine a controlled substance in [state]', and 'what schedule is tianeptine in [state]'. Control is entirely state-by-state, it is moving fast (states acted 2023–2026), and crucially the schedule is NOT the same everywhere: tianeptine is Schedule I in Florida, Georgia, Virginia, Minnesota, Delaware and Ohio but Schedule II in Tennessee, North Carolina and Nebraska, and xylazine is Schedule I in Florida, Schedule III in Delaware, Ohio, Nebraska and South Carolina, and Schedule IV in West Virginia. The only cross-state assemblies are a March-2024 PDF (LAPPA, xylazine only) and citation-free listicles. Kratom generally, 7-hydroxymitragynine (controlled federally by DEA temporary order from 2026, and at state level through kratom-product laws rather than schedules) and delta-8 are out of scope — seller sites cover them comprehensively. A state whose instrument cannot be confirmed on a fetched page is omitted, not guessed.
The data
| State | Substance | Schedule or control | Statute or rule citation | Exceptions |
|---|---|---|---|---|
| Delaware | Tianeptine | Schedule I | 16 Del. C. § 4714 | |
| Delaware | Xylazine | Schedule III | 16 Del. C. § 4718 | |
| Florida | Tianeptine | Schedule I | F.S. 893.03 | |
| Florida | Xylazine | Schedule I | F.S. 893.03 | except for a xylazine animal drug product approved by the United States Food and Drug Administration and the use of which conforms to the approved application or is authorized under 21 U.S.C. s. 360b(a)(4). The manufacture, importation, distribution, prescribing, or sale of xylazine for human use is not subject to this exception |
| Georgia | Tianeptine | Schedule I | O.C.G.A. § 16-13-25 | |
| Minnesota | Tianeptine | Schedule I | Minn. Stat. 152.02 | |
| Nebraska | Tianeptine | Schedule II | Neb. Rev. Stat. § 28-405 | |
| Nebraska | Xylazine | Schedule III | Neb. Rev. Stat. § 28-405 | |
| North Carolina | Tianeptine | Schedule II | N.C.G.S. § 90-90 | |
| Ohio | Tianeptine | Schedule I | Ohio Admin. Code 4729:9-1-01 | |
| Ohio | Xylazine | Schedule III | Ohio Admin. Code 4729:9-1-03 | |
| South Carolina | Xylazine | Schedule III | S.C. Code § 44-53-230 | |
| Tennessee | Tianeptine | Schedule II | Tenn. Code § 39-17-408 | |
| Virginia | Tianeptine | Schedule I | Va. Code § 54.1-3446 | |
| West Virginia | Xylazine | Schedule IV | W. Va. Code § 60A-2-210 |
Where this came from
Every record above links the page it was taken from and quotes the sentence that states it. These are the 12 sources this dataset was assembled from.
- delcode.delaware.govhttps://delcode.delaware.gov/title16/c047/sc02/index.html
- leg.state.fl.ushttp://www.leg.state.fl.us/statutes/index.cfm?App_mode=Display_Statute&URL=0800-0899/0893/Sections/0893.03.html
- codes.findlaw.comhttps://codes.findlaw.com/ga/title-16-crimes-and-offenses/ga-code-sect-16-13-25.html
- revisor.mn.govhttps://www.revisor.mn.gov/statutes/cite/152.02
- nebraskalegislature.govhttps://nebraskalegislature.gov/laws/statutes.php?statute=28-405
- ncleg.govhttps://www.ncleg.gov/EnactedLegislation/Statutes/HTML/BySection/Chapter_90/GS_90-90.html
- codes.ohio.govhttps://codes.ohio.gov/ohio-administrative-code/rule-4729:9-1-01
- codes.ohio.govhttps://codes.ohio.gov/ohio-administrative-code/rule-4729:9-1-03
- scstatehouse.govhttps://www.scstatehouse.gov/code/t44c053.php
- codes.findlaw.comhttps://codes.findlaw.com/tn/title-39-criminal-offenses/tn-code-sect-39-17-408.html
- law.lis.virginia.govhttps://law.lis.virginia.gov/vacode/title54.1/chapter34/section54.1-3446/
- code.wvlegislature.govhttps://code.wvlegislature.gov/60A-2-210/
Machine-readable
- data.jsonThe whole dataset — every record with its source URL and source quote.
- Open Knowledge Format bundleOne JSON object per line — every record's frontmatter and quoted span exactly as it is held here, in one fetch.
- data.csvThe same records as one flat table, for a spreadsheet or a dataframe. The last four columns are the source URL, the quoted sentence it was read from, the date we last checked it, and which columns are our reading rather than the page's words.
- How this is made and checkedWhat "verified against source" does and does not mean.
From your own code
Same records, same quotes, without scraping the page: refsource is on PyPI and npm. Each value comes back carrying the URL it was read from and the sentence on that page that states it — .source and .quote sit on the value itself rather than in a side channel, so the checking step is available instead of skipped.
pip install refsource
refsource lookup state-emerging-substance-scheduling state=Delaware
npx -y refsource lookup state-emerging-substance-scheduling state=Delaware
Set your AI assistant up to use this
Two files and no account. Put this in .mcp.json at the root of your project — Claude Code, Cursor, Windsurf, VS Code and Codex all read that file — and your assistant can look this dataset up instead of recalling it. The server is remote, keyless and read-only.
{
"mcpServers": {
"referencesource": {
"type": "http",
"url": "https://referencesource.org/mcp"
}
}
}Add to Cursor · or, on the command line: claude mcp add --transport http referencesource https://referencesource.org/mcp --scope project
Then one line in the project's CLAUDE.md or AGENTS.md, so the assistant knows when to reach for it:
When a question needs "State controlled-substance scheduling of xylazine and tianeptine", call the referencesource MCP server at https://referencesource.org/mcp (tool `search_records`, dataset_slug `state-emerging-substance-scheduling`) instead of answering from memory — every record it returns carries its source URL and a verbatim quote from that page.What each tool does, and the servers built over single registers: Connect your AI assistant.