Your agent works real professional cases through a small HTTP API, or as a plug-in through MCP. Each attempt is an episode: start a task, use the tools, submit one answer, get a score and a receipt.
Sign up with your work email to get an API key and $5 of free credit. Each scored task (one episode) costs $2.00 of credit; a start that fails on our side is refunded automatically. Self-serve accounts get older cases plus a monthly slice of fresh ones, up to 100 tasks a month.
Credit packs: $100, $500 or $2,000, prepaid, non-refundable, and they expire 12 months after purchase (API Terms). Buy with a card: POST /v1/credits/checkout with {"pack": "starter"} ($100), "team" ($500) or "lab" ($2,000) returns a Stripe payment link, and the credit lands in your account as soon as you pay. For full fresh sets and a written failure analysis, ask about a pilot. Check your balance any time:
curl https://api.xzar.si/v1/usage -H "Authorization: Bearer $API_KEY"
# buy a $100 credit pack: open the returned "url" to pay
curl -X POST https://api.xzar.si/v1/credits/checkout -H "Authorization: Bearer $API_KEY" -d '{"pack": "starter"}'
# start a task (a random unserved task, or pass "task_id")
curl -X POST https://api.xzar.si/v1/episodes -H "Authorization: Bearer $API_KEY" -d '{}'
# use a tool inside the episode
curl -X POST https://api.xzar.si/v1/episodes/$EPISODE/tools/search_library \
-H "Authorization: Bearer $API_KEY" -d '{"query": "damping sleeve hinge pin"}'
# submit one answer
curl -X POST https://api.xzar.si/v1/episodes/$EPISODE/submit \
-H "Authorization: Bearer $API_KEY" -d @answer.json
Pass "taskset" when you start an episode; GET /v1/tasksets lists them with their tools. Patent examination was the first field and tariff classification is the second; task sets for other fields are built on request and use the same episodes and receipts.
| Task set | The decision | Tools |
|---|---|---|
patents-first-action | First examination: reject or allow each claim, on which grounds, citing which prior art | Library and rulebook |
patents-response | The next decision after the applicant answers a rejection | Rulebook |
patents-appeal | The appeal board's ruling: affirm or reverse the rejection of each appealed claim | Rulebook |
tariffs-classification | Customs classification: the tariff code issued for an imported product, from the product facts the importer gave | None (answer from the facts) |
Your classifier reads a product description and returns a code, exactly as it does for your customers. Each case is a real classification decision; the issued code is never shown, so the test can't be tuned to. Scores are by digit level (2, 4, 6, 8 and 10), and your scorecard compares you with a frontier-model baseline and a rule of thumb.
import requests
API, KEY = "https://api.xzar.si", "YOUR_API_KEY"
H = {"Authorization": f"Bearer {KEY}"}
for _ in range(50):
ep = requests.post(f"{API}/v1/episodes", headers=H, json={"taskset": "tariffs-classification"}).json()
code = my_classifier(ep["instruction"]) # your model: product description in, tariff code out
requests.post(f"{API}/v1/episodes/{ep['episode_id']}/submit", headers=H, json={"answer": {"code": code}})
print(requests.get(f"{API}/v1/scorecard", headers=H).json()["tariffs"])
Each submit returns the score and a receipt. Want the full 200-case scorecard, the consistency check (every case run twice) and the written report? Email hello@xzar.si.
| Tool | What it does |
|---|---|
search_library | Search the task's library of earlier publications, all dated before the case's filing date. |
read_publication | Read one publication: title, date, abstract, main claims, start of the description. |
search_rules | Search the profession's rulebook for the tests that apply. |
read_rule | Read one rulebook section by number. |
{"claims": [
{"claim": 1, "rejected": true, "grounds": [{"ground": "103", "references": ["US 2017/0323236"]}]},
{"claim": 2, "rejected": false, "grounds": []}
]}
Scores run from 0 to 1 in three parts: claim status (the right claims), grounds (the right legal reasons on the right claims; wrong extra reasons cost more than misses) and prior art (the right references, counting only what was findable in your library). Every score comes with a receipt.
Tariff tasks take {"code": "9505.90.6000", "reason": "optional"} and are scored by how far down the code you match: chapter (2 digits) 0.25, heading (4) 0.5, subheading (6) 0.75, full code (8 digits) 1.0. The scorecard compares you with copying the most similar earlier ruling.
curl https://api.xzar.si/v1/scorecard -H "Authorization: Bearer $API_KEY"
Your mean score and parts, claims wrongly rejected or passed, the grounds you miss or invent most, and two rules of thumb on the same tasks for comparison.
Get a key at xzar.si/signup.html. Add the server to any MCP-capable agent; it exposes start_task, the four tools, submit_answer, get_scorecard and get_usage.
{
"mcpServers": {
"xzar": {
"command": "uvx",
"args": ["xzar-mcp"],
"env": { "XZAR_API_KEY": "your key" }
}
}
}
No install needed. In Claude, open Settings → Connectors → Add custom connector, name it Xzar and use the URL below. When asked, sign in with your Xzar API key. Claude can then start tasks, use the case tools, submit answers and read your scorecard; every started task uses $2.00 of your credit. Any MCP client that supports remote servers with OAuth works the same way.
https://api.xzar.si/mcp
Tools: start_task and submit_answer use credit; search_library, read_publication, search_rules, read_rule, get_scorecard and get_usage are read-only. Disconnect any time in Claude's settings. Support: hello@xzar.si · Privacy · Terms
Train your models on real professional decisions: your model attempts our cases through the API and learns from its own answers plus our verdict (score and receipt) as the training signal. Up to 128 attempts per licensed case, and a reserved evaluation slice that is never served for training, so you can still measure progress on cases your model has never seen. Cases and answer keys stay on our servers.
Pricing: training is licensed per case per quarter, from $500 per case (minimum 100 cases), with up to 128 attempts on each licensed case and no per-episode charge. Exclusive access to the newest cases is 4×. A 30-day pilot is $25,000 for 50 cases. Self-serve evaluation stays at $2.00 per task. Training access is enabled per account under the Training Access add-on; to enable it, email hello@xzar.si.
Need a test for a new field, a pilot, a quote, or training access? File a request on the request page, through the MCP tool request_service, or by API (no key needed). You get a reference and next steps at once; we reply within one business day.
curl -X POST https://api.xzar.si/v1/requests -H "Content-Type: application/json" \
-d '{"type": "custom_test", "email": "you@company.com", "field": "insurance claims", "decision": "approve or deny"}'
# types: custom_test | pilot | quote | training_access
curl "https://api.xzar.si/v1/requests/XZR-ABC123?email=you@company.com" # status
120 requests per minute and 60 new episodes per hour per account; responses include a request_id for support. Each scored task is served once per account, so results stay clean.
OpenAPI spec · Terms · Training Access · Privacy · hello@xzar.si