Compliance data API
for AI agents
2,500+ verified compliance obligations with legal citations, deadlines, and penalties. Match obligations to any company profile in a single API call.
https://compliancesingularity.com/api/v1
Authentication
All endpoints require an API key passed as a Bearer token in the Authorization header. API access is free during beta.
Authorization: Bearer cs_live_your_api_key_here
API keys are prefixed with cs_live_ for production and cs_test_ for sandbox. Create keys from your account dashboard or via the Create API Key endpoint.
Quick Start
Get your API key
Sign up for a free account and generate an API key from the Settings page. All endpoints require an API key. Free during beta.
Make your first call
List all compliance obligations or search by jurisdiction:
curl https://compliancesingularity.com/api/v1/obligations \
-G \
-d jurisdiction=California \
-d category=Tax \
-d limit=5
import requests
resp = requests.get(
"https://compliancesingularity.com/api/v1/obligations",
params={
"jurisdiction": "California",
"category": "Tax",
"limit": 5
}
)
data = resp.json()
print(f"Found {data['total']} obligations")
const params = new URLSearchParams({
jurisdiction: "California",
category: "Tax",
limit: 5
});
const resp = await fetch(
`https://compliancesingularity.com/api/v1/obligations?${params}`
);
const data = await resp.json();
console.log(`Found ${data.total} obligations`);
Parse the response
Every response returns a consistent JSON envelope:
{
"obligations": [
{
"slug": "ca-employer-payroll-tax-registration",
"title": "California Employer Payroll Tax Registration (DE-1)",
"category": "Tax",
"jurisdiction": "California",
"jurisdiction_level": "state",
"legal_citation": "Cal. Unemp. Ins. Code \u00a7 1088",
"penalty": "$50/day late filing penalty",
"recurrence": "once",
"description": "Register with the CA EDD within 15 days of paying $100+ in wages..."
}
],
"total": 43,
"page": 1,
"limit": 5,
"has_more": true
}
/api/v1/obligations
List and filter compliance obligations from the global catalog. Supports pagination, jurisdiction filtering, category filtering, and more.
Query Parameters
jurisdictionstringjurisdiction_levelstringfederal, state, city, countrycategorystringTax, Legal, HR, Benefits, Securityentity_typestringc_corp, llc, s_corp, etc.industrystringpageinteger1limitinteger25curl https://compliancesingularity.com/api/v1/obligations \
-G \
-d jurisdiction=Delaware \
-d category=Legal
import requests
resp = requests.get(
"https://compliancesingularity.com/api/v1/obligations",
params={"jurisdiction": "Delaware", "category": "Legal"}
)
print(resp.json())
200 OK
{
"obligations": [
{
"slug": "de-annual-franchise-tax",
"title": "Delaware Annual Franchise Tax Filing",
"category": "Legal",
"jurisdiction": "Delaware",
"jurisdiction_level": "state",
"recurrence": "annual",
"legal_citation": "8 Del. C. \u00a7 502",
"penalty": "$200 penalty + 1.5%/month interest",
"description": "All domestic corporations must file an annual report and pay franchise tax by March 1..."
}
],
"total": 8,
"page": 1,
"limit": 25,
"has_more": false
}
/api/v1/obligations/search
Full-text search across obligation titles, descriptions, and legal citations.
Query Parameters
qstringrequiredlimitinteger25curl "https://compliancesingularity.com/api/v1/obligations/search?q=COBRA"
/api/v1/obligations/:slug
Get a single obligation by slug. Returns full obligation details including the applicability_rules object.
Path Parameters
slugstringrequiredca-employer-payroll-tax-registration)200 OK{
"slug": "federal-form-941",
"title": "IRS Form 941 — Quarterly Payroll Tax Return",
"category": "Tax",
"jurisdiction": "Federal",
"recurrence": "quarterly",
"legal_citation": "26 USC \u00a7 3111, 26 CFR 31.6011(a)-1",
"penalty": "5% of unpaid tax per month, max 25%",
"description": "Quarterly filing of employment taxes...",
"applicability_rules": {
"country": "US",
"entity_type": ["c_corp", "s_corp", "llc"],
"has_employees": true,
"employee_count_min": 1
}
}
/api/v1/deadlines
Get recurring obligations with their next deadline dates, grouped by jurisdiction. Useful for building compliance calendars.
Query Parameters
jurisdictionstringmonths_aheadinteger3curl "https://compliancesingularity.com/api/v1/deadlines?jurisdiction=Federal&months_ahead=6"
200 OK{
"deadlines": [
{
"slug": "federal-form-941",
"title": "IRS Form 941",
"recurrence": "quarterly",
"next_deadline": "2026-04-30",
"jurisdiction": "Federal"
}
],
"total": 12
}
/api/v1/jurisdictions
List all jurisdictions in the catalog with obligation counts per category.
200 OK{
"jurisdictions": [
{
"name": "California",
"level": "state",
"country": "US",
"obligation_count": 43,
"categories": {"Tax": 12, "HR": 18, "Legal": 8, "Benefits": 5}
}
],
"total": 64
}
/api/v1/coverage
Get the current catalog coverage score -- how comprehensive the obligation database is across jurisdictions and categories.
200 OK{
"total_obligations": 521,
"jurisdictions_covered": 64,
"categories": {
"Tax": 156,
"Legal": 134,
"HR": 112,
"Benefits": 78,
"Security": 41
},
"last_updated": "2026-03-26T04:00:00Z"
}
/api/v1/match
The primary endpoint. Send a company profile and receive all applicable compliance obligations. This is the endpoint AI agents should call to determine what a company needs to comply with.
Request Body
countrystringrequired"US")entity_typestringrequiredc_corp, s_corp, llc, sole_prop, partnership, nonprofitstatestringemployee_countintegeremployee_statesstring[]industrystringhas_1099_contractorsbooleanis_government_contractorbooleansales_tax_nexusstring[]curl -X POST https://compliancesingularity.com/api/v1/match \
-H "Authorization: Bearer cs_live_your_key" \
-H "Content-Type: application/json" \
-d '{
"country": "US",
"entity_type": "c_corp",
"state": "Delaware",
"employee_count": 45,
"employee_states": ["California", "New York", "Texas"],
"industry": "SaaS",
"has_1099_contractors": true
}'
import requests
resp = requests.post(
"https://compliancesingularity.com/api/v1/match",
headers={"Authorization": "Bearer cs_live_your_key"},
json={
"country": "US",
"entity_type": "c_corp",
"state": "Delaware",
"employee_count": 45,
"employee_states": ["California", "New York", "Texas"],
"industry": "SaaS",
"has_1099_contractors": True
}
)
obligations = resp.json()["obligations"]
print(f"Company has {len(obligations)} obligations")
200 OK{
"obligations": [
{
"slug": "federal-form-941",
"title": "IRS Form 941 \u2014 Quarterly Payroll Tax Return",
"category": "Tax",
"jurisdiction": "Federal",
"recurrence": "quarterly",
"match_reason": "US C-Corp with 45 employees",
"applicability_rules": { /* ... */ }
},
{
"slug": "ca-employer-payroll-tax-registration",
"title": "California Employer Payroll Tax Registration",
"category": "Tax",
"jurisdiction": "California",
"recurrence": "once",
"match_reason": "Employees in California",
"applicability_rules": { /* ... */ }
}
],
"total": 87,
"profile_summary": {
"entity_type": "c_corp",
"jurisdictions_matched": 5,
"categories": {"Tax": 28, "Legal": 22, "HR": 19, "Benefits": 12, "Security": 6}
}
}
/api/v1/keys
Login Required
Create a new API key. Requires an active platform login session (cookie-based auth, not Bearer token). The key is shown once in the response and cannot be retrieved again.
Request Body
namestringrequired201 Created{
"key": "cs_live_a1b2c3d4e5f6...",
"name": "Production",
"created_at": "2026-03-26T12:00:00Z",
"message": "Store this key securely. It will not be shown again."
}
Error Handling
The API uses standard HTTP status codes. Error responses include a JSON body with a message field.
400
401
404
429
Retry-After header500
{
"error": "rate_limited",
"message": "Rate limit exceeded. 100 calls/day on Community plan.",
"retry_after": 3600
}
Rate Limits
Rate limits are enforced per API key (or per IP for unauthenticated requests). Current usage is returned in response headers:
X-RateLimit-Limit: 10000
X-RateLimit-Remaining: 9847
X-RateLimit-Reset: 1711497600
MCP Server
The Compliance Singularity MCP server lets Claude Desktop and any MCP-compatible agent call compliance tools natively — no REST wrapper needed. It speaks JSON-RPC 2.0 over a single HTTP endpoint.
Claude Desktop setup
Add this block to your claude_desktop_config.json (replace the token with one from Settings → Agent Tokens):
{
"mcpServers": {
"compliance-singularity": {
"type": "http",
"url": "https://compliancesingularity.com/mcp",
"headers": { "Authorization": "Bearer csa_YOUR_TOKEN_HERE" }
}
}
}
Agent tokens
Public tools work without any credentials. To access org-scoped tools (your live compliance list, filing automation), create an agent token with a csa_ prefix from Settings → Agent Tokens. Tokens support granular scopes:
| Scope | Grants access to |
|---|---|
read:obligations | Get org's compliance list, filing status |
write:obligations | Create or update compliance items |
file:filings | Initiate automated filings |
read:company | Read company profile data |
write:company | Update company profile |
Available tools
| Tool | Auth required | Description |
|---|---|---|
check_obligations | None | Match a company profile to applicable obligations |
search_catalog | None | Full-text search over 2,500+ catalog items |
get_obligation_detail | None | Full details for one obligation by slug |
list_upcoming_deadlines | None | Obligations with deadlines in the next N days |
submit_regulation | None | Propose a regulation for catalog inclusion |
get_company_obligations | read:obligations | Live compliance list for your organization |
initiate_filing | file:filings | Trigger automated filing for a compliance item |
get_filing_status | read:obligations | Status of a previously initiated filing |
Raw JSON-RPC example
You can also call the MCP endpoint directly without a client library:
curl -X POST https://compliancesingularity.com/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
curl -X POST https://compliancesingularity.com/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "check_obligations",
"arguments": {
"company_profile": {
"country": "US",
"state": "Delaware",
"entity_type": "c_corp",
"employee_count": 45,
"employee_states": ["California", "New York"]
}
}
}
}'
import requests
BASE = "https://compliancesingularity.com/mcp"
HEADERS = {
"Content-Type": "application/json",
"Authorization": "Bearer csa_YOUR_TOKEN_HERE",
}
resp = requests.post(BASE, headers=HEADERS, json={
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_company_obligations",
"arguments": {},
},
})
data = resp.json()
print(data["result"]["content"][0]["text"])
API Explorer
Make live API calls directly from the docs. Responses are shown below.
Click "Send" to make a request...