ReferenceTools
legal_query
Execute SQL queries against the legal database
legal_query
Execute read-only SQL queries against LawForge's legal database using DuckDB syntax. This tool provides direct access to parquet files containing court opinions, citations, and metadata.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
sql | string | Yes | SQL query (SELECT only, must use LawForge parquet sources) |
Security
- Only
SELECTqueries are allowed - Queries must use
read_parquet()withhttps://api.lawforge.io/r2/data/sources - SQL comments and dangerous operations are blocked
- Maximum query length: 50,000 characters
Available Tables
Access data via read_parquet():
| Table | Path |
|---|---|
| Courts | https://api.lawforge.io/r2/data/courts/courts-*.parquet |
| Opinion Clusters | https://api.lawforge.io/r2/data/opinion-clusters/opinion-clusters-*.parquet |
| Opinions | https://api.lawforge.io/r2/data/opinions/opinions-*.parquet |
| Citations | https://api.lawforge.io/r2/data/citations/citations-*.parquet |
Example Request
{
"sql": "SELECT id, case_name, date_filed FROM read_parquet('https://api.lawforge.io/r2/data/opinion-clusters/opinion-clusters-00000.parquet') WHERE case_name ILIKE '%miranda%' LIMIT 10"
}Example Response
{
"columns": ["id", "case_name", "date_filed"],
"rows": [
[1234567, "Miranda v. Arizona", "1966-06-13"],
[2345678, "Dickerson v. United States", "2000-06-26"]
],
"row_count": 2,
"truncated": false
}Common Queries
Search by case name
SELECT id, case_name, date_filed, court_id
FROM read_parquet('https://api.lawforge.io/r2/data/opinion-clusters/opinion-clusters-*.parquet')
WHERE case_name ILIKE '%v. united states%'
LIMIT 20Find cases by court
SELECT c.id, c.case_name, ct.short_name as court
FROM read_parquet('https://api.lawforge.io/r2/data/opinion-clusters/opinion-clusters-00000.parquet') c
JOIN read_parquet('https://api.lawforge.io/r2/data/courts/courts-00000.parquet') ct ON c.court_id = ct.id
WHERE ct.short_name = 'SCOTUS'
LIMIT 10Count citations
SELECT cited_opinion_id, COUNT(*) as citation_count
FROM read_parquet('https://api.lawforge.io/r2/data/citations/citations-*.parquet')
GROUP BY cited_opinion_id
ORDER BY citation_count DESC
LIMIT 10