{
  "markdown": "# Quorel\n\n**Give your AI agent a live, versioned view of any website.**\n\n> Note: this codebase was originally built and named **Vexaro**, before the product was renamed to **Quorel**. The code, commit history, and package names in this repo still reflect the original name. A rename pass is planned. This repo is public, you're looking at the real, current implementation right now: [github.com/var-raphael/vexaro](https://github.com/var-raphael/vexaro). The live product, docs, and public API are already fully rebranded as Quorel: [quorel.vercel.app](https://quorel.vercel.app)\n\nDescribe the fields you want, in plain English. Quorel extracts them nightly, keeps every past version permanently queryable, and hands your AI agent an MCP tool that can read, query, and even fix the data directly, without you writing a scraper.\n\nLive and public beta: [quorel.vercel.app](https://quorel.vercel.app)\nDocs: [quorel.vercel.app/docs/quickstart](https://quorel.vercel.app/docs/quickstart)\n\n---\n\n## What it does\n\nMost data tools hand you today's snapshot and move on. Quorel keeps every past version, permanently queryable, so you can see what changed and when, not just what's true right now.\n\n- **Plain-English schema definition.** Describe the fields you want (`title (string), the title of the article`) and Quorel figures out extraction.\n- **Nightly refresh, versioned.** Every refresh is a saved, diffable version. Compare any two versions side by side, roll back in one click, or freeze a version so it can't change again.\n- **Fork any public dataset.** Start from someone else's dataset the way you'd fork a repo.\n- **MCP on every plan, including Free.** Claude or any MCP-compatible agent can query a dataset, ask what changed since last week, and even fix bad rows itself, publishing the correction as a new, reversible version.\n- **No scraper maintenance.** Extraction adapts when the underlying page layout changes, instead of silently breaking.\n\n## Try it with zero setup\n\nPublic datasets need no account, no API key. Just a GET request:\n\n```\nGET https://quorel.vercel.app/api/1/hacker-news-top/active/\n    ?format=json\n    &limit=5\n    &sort=score:desc\n```\n\n```json\n[\n  {\n    \"title\": \"Show HN: I built a source of truth for the web\",\n    \"score\": 412,\n    \"comments\": 187,\n    \"url\": \"https://news.ycombinator.com/item?id=...\"\n  }\n]\n```\n\nBrowse all public datasets in the [marketplace](https://quorel.vercel.app/datasets), swap the slug, and query any of them the same way.\n\n## API URL structure\n\n```\nhttps://quorel.vercel.app/api/{dataset_id}/{name-slug}/{version}/\n```\n\n| Part | Meaning |\n|---|---|\n| `dataset_id` | The numeric ID of the dataset |\n| `name-slug` | The dataset name, lowercased and hyphenated |\n| `version` | `active` (pinned version), `latest`, or `v1`, `v2`, `v3`, etc. |\n\n### Query parameters\n\nEvery endpoint accepts the same set of parameters, stack as many as you need:\n\n| Parameter | Default | Description |\n|---|---|---|\n| `format` | `json` | Output format: `json`, `jsonl`, `csv`, `tsv`, `xml`, `parquet` |\n| `limit` | all | Max number of entities to return |\n| `offset` | `0` | Skip the first N entities |\n| `sort` | none | Sort by a field, e.g. `sort=score:desc` |\n| `keywords` | none | Full-text search across all fields, comma-separated for OR |\n| `keywords_mode` | `or` | Use `and` for AND search across keywords |\n| `filter` | none | Exact match on a field, e.g. `filter=category:finance`. Repeatable |\n| `filter_contains` | none | Partial match on a field. Repeatable |\n| `keep_field` | none | Return only these fields (dot-notation supported) |\n| `drop_field` | none | Remove these fields from the response |\n| `dedup` | `false` | Remove duplicate entities. Use `dedup_key=field1,field2` to dedup on specific fields |\n| `denull` | `false` | Strip null and empty string values recursively |\n| `flatten` | `false` | Flatten nested objects into dot-notation keys (auto-applied for csv, tsv, parquet) |\n| `sample` | none | Return N randomly sampled entities |\n| `count` | `false` | Return only the count of matched entities |\n| `alt` | `false` | Return the alt version of the dataset, if one exists |\n| `include_source` | `true` | Include the `_source` field (origin URL of each entity) |\n| `pretty` | `true` | Pretty-print JSON output |\n\n### Rate limits\n\n| Access | Limit |\n|---|---|\n| Public (no auth) | 100 requests/minute, per IP |\n| Private (Bearer token) | 300 requests/minute, per IP |\n\nRate limit headers are included in every response: `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset`.\n\n## Creating your own dataset\n\nFree account, no credit card required. One dataset, up to 20 URLs.\n\n1. **Sign up** at [quorel.vercel.app/auth](https://quorel.vercel.app/auth)\n2. **Paste URLs or describe your intent.** Import URLs directly, or describe what you want in plain English and Quorel discovers sources via web search.\n3. **Define your schema.** Tell Quorel which fields you want and what they mean, e.g. `score (number), the upvote count`.\n4. **Wait for processing.** Quorel crawls your URLs, runs AI extraction against your schema, and versions the result.\n5. **Hit your endpoint.** Query it exactly like the public example above, using your dataset ID and slug from the dashboard.\n\n### Accessing a private dataset\n\n```\nGET https://quorel.vercel.app/api/42/my-dataset/active/\nAuthorization: Bearer your_private_key\n```\n\nFind your private key in your dataset's dashboard page.\n\n## MCP: letting an agent work the data directly\n\nEvery dataset ships with an MCP server, on every plan, including Free. Claude or any MCP-compatible agent can filter it, sort it, ask what changed, and even fix bad rows itself.\n\n```\nInside a Claude chat:\n\n> what changed on job-board-listings this week\n→ queried v14 vs v9, 23 postings added, 8 removed\n\n> fix the missing salary fields and publish v15\n→ reviewed 200 rows, filled 14 fields from listing text\n→ live at /job-board-listings/v15\n```\n\nAgent-made changes land in the same versioned, reversible system as anything done by hand, nothing is silently overwritten. Full details: [quorel.vercel.app/docs/mcp](https://quorel.vercel.app/docs/mcp)\n\n## Versioning and rollback\n\n- **See exactly what changed.** Compare any two versions side by side: added rows, removed rows, changed values.\n- **Roll back in one click.** A bad refresh pulled in dirty data? Revert instantly, or freeze a version so it can't change again.\n- **Fork any public dataset.** Start from someone else's dataset the way you'd fork a repo, add your own fields, publish your own copy.\n\nFull details: [quorel.vercel.app/docs/versioning](https://quorel.vercel.app/docs/versioning)\n\n## Pricing\n\n| | Free | Pro ($19/mo) | Scale |\n|---|---|---|---|\n| Datasets | 1 | 5 | Unlimited |\n| URLs per dataset | 20 | 100 | 500 |\n| Refresh | Nightly | On-demand via ping URL | Custom schedules |\n| Version history & rollback | ✅ | ✅ | ✅ |\n| MCP access | ✅ | ✅ | ✅ |\n| Support | Community | Email | Dedicated |\n\nScale is coming soon, [join the waitlist](https://quorel.vercel.app).\n\n## What people build with it\n\n- **Competitor pricing history**, every price change tracked, not just today's number\n- **Job market monitoring**, postings, salaries, and what got taken down\n- **Real estate over time**, status changes, price drops, days on market, versioned\n- **Live context for AI agents**, Claude checking what changed on a site since last week\n- **A data backend for apps**, query params in, structured API out, no scraping infra to own\n\n## Docs\n\n- [Quickstart](https://quorel.vercel.app/docs/quickstart)\n- [Creating a dataset](https://quorel.vercel.app/docs/dataset)\n- [API reference](https://quorel.vercel.app/docs/api)\n- [MCP](https://quorel.vercel.app/docs/mcp)\n- [Webhooks](https://quorel.vercel.app/docs/webhooks)\n- [Versioning and rollback](https://quorel.vercel.app/docs/versioning)\n- [FAQ](https://quorel.vercel.app/docs/faq)\n\n## About this repo\n\nThis is the working codebase for Quorel, built and maintained solo. It was originally developed under the name **Vexaro**; the product was later renamed to Quorel, and that rename is reflected across the live product, docs, and public-facing brand. A full rename pass across this codebase (package names, internal references) is planned.\n\nThe code is open here: [github.com/var-raphael/vexaro](https://github.com/var-raphael/vexaro). Issues, questions, and contributions are welcome.\n\n**Live product:** [quorel.vercel.app](https://quorel.vercel.app)\n**Contact:** samuelraphael925@gmail.com\n\n",
  "bytes": 8490,
  "sha": "33adac43a2a0b69759d92932aec0d671cee6913d124d716fc7c3882786f1450b",
  "repo_slug": "var-raphael/quorel",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_var_raphael_quorel_36eb143e/readme"
}