API
Everything is public, read-only and CORS-open. No key, no sign-up. Facts marked as inferred are never served.
| endpoint | returns |
|---|---|
| /api/public/v1/providers | Provider index with fact counts |
| /api/public/v1/providers/{slug} | One provider, its products, plans and facts |
| /api/public/v1/facts?provider=&product=&plan=&key=&status=&limit= | Atomic facts; returns FACT_NOT_FOUND with suggestions when nothing matches |
| /api/public/v1/compare?a=&b= | Deterministic key-by-key comparison of two providers |
| /api/public/v1/changes?limit= | Recently changed facts, newest first |
| /api/public/md/providers/{slug} | Markdown twin of the provider record |
| /api/public/mcp | MCP server for AI agents; GET lists the tools, POST speaks JSON-RPC 2.0 |
| /llms.txt | Short agent guide to the dataset |
| /llms-full.txt | Expanded agent guide with worked examples |
| /openapi.json | OpenAPI 3.1 description |
| /data/snapshot.jsonl | One JSON object per published fact |
| /data/schema.md | Field-by-field dataset schema |
Example response
GET /api/public/v1/facts?provider=vercel&key=compute.function.max_duration_seconds
{
"object": "list",
"count": 1,
"query": { "provider": "vercel", "key": "compute.function.max_duration_seconds" },
"data": [
{
"provider": { "slug": "vercel", "name": "Vercel" },
"plan": { "slug": "hobby", "name": "Hobby" },
"key": "compute.function.max_duration_seconds",
"value": 300,
"unit": "seconds",
"raw_value": "Maximum duration 300 seconds on Hobby",
"status": "verified",
"last_verified_at": "2026-09-18T09:00:00+00:00",
"source": {
"url": "https://vercel.com/docs/functions/limitations",
"title": "Vercel Functions limits",
"retrieved_at": "2026-09-18T09:00:00+00:00"
}
}
]
}MCP server
Assistants that speak MCP can query the dataset directly — no scraping, no key. Point the client at the endpoint below; the tools are list_providers, list_keys, get_facts, compare_key_across_providers, compare_providers, list_changes and dataset_status. Every result carries the same source URL, timestamp and status as the REST API.
MCP client configuration
{
"mcpServers": {
"limitsdb": {
"type": "http",
"url": "https://project--2334455f-1446-46cc-973a-99055b662eee.lovable.app/api/public/mcp"
}
}
}Error shape
404
{
"error": {
"code": "FACT_NOT_FOUND",
"message": "No published fact matched the requested provider, plan and key.",
"suggestions": ["Remove the plan filter", "Call /api/public/v1/facts?provider=<slug> to list available keys"]
}
}