The cat

Developer API · The cat

This is the API of the cat (amazing.cat), a search engine for case law, government agency acts and laws of Russia for AI agents. Programs call the cat’s tools directly over MCP; to search through an AI agent, connect the free amazingcat MCP server (“the cat”) to your agent using the instructions.

Access and limits

Get a free token in your browser at mcp.amazingcat.net/#get. If you need higher limits, email alexey@amazingcat.net.

YOUR_AMAZINGCAT_TOKEN — your form-issued token; Python and TypeScript read it from the AMAZINGCAT_TOKEN environment variable. Send it as Authorization: Bearer. Keep it on your server, out of URLs and browser code. AI applications using OAuth connect through browser authorization.

AccessPer 60 secondsPer UTC day
Free60300

The rate limit uses a rolling 60-second window; UTC days start at 00:00 UTC. The daily limit applies per token; all free tokens from one network together also get at most 300 requests per UTC day. One request can return several documents.

When throttled, the server supplies Retry-After. tools/call can signal a quota refusal with HTTP 200; it is not a search result. Check status, Retry-After and errors inside the response.

MCP and responses

Streamable HTTP endpoint: https://mcp.amazingcat.net/mcp. Send Content-Type: application/json and Accept: application/json, text/event-stream for POST. JSON-RPC returns result; a tool response is in result.content[].text. It is a JSON string requiring a second parse.

For text/event-stream collect the data: lines of one event and parse the event whose id matches your request. notifications/initialized has no id and receives HTTP 202. Tool names and arguments are listed in tools/list.

HTTPAction
401Check Authorization: Bearer and the token.
404Unknown or closed session: initialize again, then send notifications/initialized.
429Wait for Retry-After and retry the request.
200Check Retry-After, JSON-RPC error and tool errors; HTTP 200 may contain a quota refusal.

Session: what YOUR_MCP_SESSION_ID means and where to get it

YOUR_MCP_SESSION_ID — the value of the Mcp-Session-Id response header returned by initialize. It identifies the connection; it is not an access token. Copy only the value, without the header name or surrounding spaces. Send it with Bearer in subsequent calls in this session.

The sequence below resolves the Air Code: initialize with visible response headers (-D -), save the identifier, send notifications/initialized, then tools/call.

export AMAZINGCAT_TOKEN='YOUR_AMAZINGCAT_TOKEN'
# initialize: show headers and save them; the response body goes to initialize.json.
curl --fail-with-body 'https://mcp.amazingcat.net/mcp' -D - -o initialize.json \
  -H "Authorization: Bearer $AMAZINGCAT_TOKEN" \
  -H 'Accept: application/json, text/event-stream' -H 'Content-Type: application/json' \
  --data '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"cat-curl","version":"1"}}}' \
  | tee initialize.headers
# Copy the server's response header into a variable.
export MCP_SESSION_ID="$(awk 'tolower($1)=="mcp-session-id:" {gsub("\r","",$2);print $2}' initialize.headers)"
test -n "$MCP_SESSION_ID" || exit 1
curl --fail-with-body 'https://mcp.amazingcat.net/mcp' \
  -H "Authorization: Bearer $AMAZINGCAT_TOKEN" -H "Mcp-Session-Id: $MCP_SESSION_ID" \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -H 'Accept: application/json, text/event-stream' -H 'Content-Type: application/json' \
  --data '{"jsonrpc":"2.0","method":"notifications/initialized"}'
curl --fail-with-body 'https://mcp.amazingcat.net/mcp' \
  -H "Authorization: Bearer $AMAZINGCAT_TOKEN" -H "Mcp-Session-Id: $MCP_SESSION_ID" \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -H 'Accept: application/json, text/event-stream' -H 'Content-Type: application/json' \
  --data '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"law_find","arguments":{"query":"Воздушный кодекс","limit":5}}}'

Python · requests

Read the identifier using response.headers["Mcp-Session-Id"].

"""Python 3.10+: pip install requests; set AMAZINGCAT_TOKEN from the browser form."""
import json, os
import requests

http = requests.Session()
http.headers.update({"Authorization": "Bearer " + os.environ["AMAZINGCAT_TOKEN"],
                     "Accept": "application/json, text/event-stream"})
URL = "https://mcp.amazingcat.net/mcp"

def rpc(method, params=None, notification=False):
    body = {"jsonrpc": "2.0", "method": method, "params": params or {}}
    if not notification: body["id"] = method
    with http.post(URL, json=body, stream=True, timeout=(15, 120)) as response:
        response.raise_for_status()
        if response.headers.get("Retry-After"): raise RuntimeError("Quota pause: " + response.headers["Retry-After"])
        # initialize returns this response header; subsequent calls send it back.
        if "Mcp-Session-Id" in response.headers:
            http.headers["Mcp-Session-Id"] = response.headers["Mcp-Session-Id"]
        if response.status_code == 202: return None
        if "text/event-stream" in response.headers.get("Content-Type", ""):
            response.encoding = "utf-8"; data = []; message = None
            for line in response.iter_lines(decode_unicode=True):
                if line.startswith("data:"): data.append(line[5:].lstrip())
                elif not line and data:
                    event = json.loads("\n".join(data)); data = []
                    if event.get("id") == body.get("id"): message = event; break
            if message is None: raise RuntimeError("No matching JSON-RPC response")
        else: message = response.json()
    if "error" in message: raise RuntimeError(message["error"])
    return message["result"]

init = rpc("initialize", {"protocolVersion": "2025-06-18", "capabilities": {},
                         "clientInfo": {"name": "cat-session", "version": "1"}})
session_id = http.headers["Mcp-Session-Id"]
http.headers["MCP-Protocol-Version"] = init["protocolVersion"]
rpc("notifications/initialized", notification=True)
reply = rpc("tools/call", {"name": "law_find", "arguments": {"query": "Воздушный кодекс", "limit": 5}})
if reply.get("isError"): raise RuntimeError(reply)
law = json.loads(next(b["text"] for b in reply["content"] if b["type"] == "text"))
if law.get("error") or law.get("ошибка"): raise RuntimeError(law)
print(json.dumps({"session_received": bool(session_id), "candidates": len(law["candidates"]),
                  "first": law["candidates"][0]["name"]}, ensure_ascii=False))
http.close()

No fixed session lifetime is advertised. After closing the session or restarting the server, initialize again. An unknown or closed identifier returns HTTP 404 with JSON-RPC error.code=-32600; observed messages are “Session not found” and “Not Found: Session has been terminated”. Remove the old Mcp-Session-Id, repeat initialize and notifications/initialized, then retry the call.

Session calls consume the request quota, including notifications/initialized, tools/list and tools/call. initialize does not consume quota. The number of returned documents does not change the cost of a call.

Clients

All four clients perform the first step of the award-comparison example: resolve the Air Code before reading Articles 103, 105, 107 and 108. limit=5 allows code-name resolution.

Set the token on your server:

export AMAZINGCAT_TOKEN='YOUR_AMAZINGCAT_TOKEN'
Python · requests

raw.py

"""Small synchronous MCP client. pip install requests"""
import itertools
import json
import os
import random
import time

import requests


class MCP:
    def __init__(self, token, endpoint="https://mcp.amazingcat.net/mcp", rpm=60):
        self.endpoint = endpoint
        self.rpm = min(60, rpm)
        self.last = 0.0
        self.ids = itertools.count(1)
        self.http = requests.Session()
        self.http.headers.update({
            "Authorization": f"Bearer {token}",
            "Accept": "application/json, text/event-stream",
            "Content-Type": "application/json",
        })

    def rpc(self, method, params=None, notification=False):
        payload = {"jsonrpc": "2.0", "method": method}
        if params is not None:
            payload["params"] = params
        if not notification:
            payload["id"] = next(self.ids)
        for attempt in range(5):
            time.sleep(max(0, 60 / self.rpm - (time.monotonic() - self.last)))
            self.last = time.monotonic()
            try:
                with self.http.post(self.endpoint, json=payload, stream=True,
                                    timeout=(15, 120)) as response:
                    # This API also signals tool-call quota exhaustion with HTTP 200.
                    wait = response.headers.get("Retry-After")
                    if wait or response.status_code in (429, 502, 503, 504):
                        delay = int(wait) if wait and wait.isdigit() else min(30, 2 ** attempt)
                        if attempt == 4:
                            raise RuntimeError(f"Retry budget exhausted; HTTP {response.status_code}")
                        # A daily limit must be scheduled for later, not kept in a retry loop.
                        if delay > 120:
                            raise RuntimeError(f"Quota exhausted; retry after {delay} seconds")
                        time.sleep(delay + random.uniform(0, 0.5))
                        continue
                    if response.status_code == 404 and method != "initialize" and self.http.headers.get("Mcp-Session-Id") and attempt < 4:
                        self.http.headers.pop("Mcp-Session-Id", None)
                        self.initialize()
                        continue
                    response.raise_for_status()  # 401: replace/refresh credentials, do not retry.
                    sid = response.headers.get("Mcp-Session-Id")
                    if sid:
                        self.http.headers["Mcp-Session-Id"] = sid
                    if response.status_code == 202:
                        return None
                    if "text/event-stream" in response.headers.get("Content-Type", ""):
                        response.encoding = "utf-8"
                        data = []
                        message = None
                        for line in response.iter_lines(decode_unicode=True, delimiter="\n"):
                            line = line.rstrip("\r")
                            if line.startswith("data:"):
                                data.append(line[5:].lstrip(" "))
                            elif not line and data:
                                event = json.loads("\n".join(data))
                                data = []
                                if event.get("id") == payload.get("id"):
                                    message = event
                                    break
                        if message is None:
                            raise RuntimeError("SSE ended without the matching JSON-RPC response")
                    else:
                        message = response.json()
            except (requests.ConnectionError, requests.Timeout):
                if attempt == 4:
                    raise
                time.sleep(min(30, 2 ** attempt) + random.uniform(0, 0.5))
                continue
            if "error" in message:
                raise RuntimeError(message["error"])
            return message["result"]
        raise RuntimeError("Retry budget exhausted")

    def initialize(self):
        result = self.rpc("initialize", {
            "protocolVersion": "2025-06-18", "capabilities": {},
            "clientInfo": {"name": "amazingcat-api-example", "version": "1.0"},
        })
        self.http.headers["MCP-Protocol-Version"] = result["protocolVersion"]
        self.rpc("notifications/initialized", notification=True)
        return result

    def call(self, name, arguments):
        for attempt in range(5):
            result = self.rpc("tools/call", {"name": name, "arguments": arguments})
            if result.get("isError"):
                raise RuntimeError(result.get("content"))
            blocks = [b["text"] for b in result.get("content", []) if b.get("type") == "text"]
            if not blocks:
                raise RuntimeError("No text content; inspect the MCP result")
            try:
                value = json.loads(blocks[0])
            except json.JSONDecodeError:
                # Plain text can be a quota message, never interpret it as zero results.
                raise RuntimeError(blocks[0]) from None
            if isinstance(value, dict) and value.get("error") == "server_busy":
                if attempt < 4:
                    time.sleep(value.get("retry_after_seconds", 5) + random.uniform(0, 0.5))
                    continue
            if isinstance(value, dict) and (value.get("error") or value.get("ошибка")):
                raise RuntimeError(value)
            return value
        raise RuntimeError("Server busy; retry later")

    def close(self):
        if "Mcp-Session-Id" in self.http.headers:
            self.http.delete(self.endpoint, timeout=(15, 30)).close()
        self.http.close()


def main():
    client = MCP(os.environ["AMAZINGCAT_TOKEN"])
    try:
        client.initialize()
        result = client.call("law_find", {"query": "Воздушный кодекс", "limit": 5})
        print(json.dumps({"tool": "law_find", "candidates": len(result["candidates"]),
                          "first": result["candidates"][0]["name"]}, ensure_ascii=False))
    finally:
        client.close()


if __name__ == "__main__":
    main()

Output:

{
  "tool": "law_find",
  "candidates": 1,
  "first": "Воздушный кодекс Российской Федерации"
}
Python · MCP SDK

sdk.py

"""Python 3.10+. pip install -r requirements.txt; set AMAZINGCAT_TOKEN."""
import asyncio
import json
import os
from datetime import timedelta

import httpx
from mcp import ClientSession
from mcp.client.streamable_http import streamable_http_client


async def main():
    # Keep the token on your server. Never embed it in a browser bundle.
    async with httpx.AsyncClient(
        headers={"Authorization": f"Bearer {os.environ['AMAZINGCAT_TOKEN']}"},
        timeout=httpx.Timeout(120.0, connect=15.0),
    ) as http:
        async with streamable_http_client(
            "https://mcp.amazingcat.net/mcp", http_client=http
        ) as (read, write, session_id):
            async with ClientSession(
                read, write, read_timeout_seconds=timedelta(seconds=120)
            ) as session:
                # initialize() also sends notifications/initialized.
                # The transport handles session/version headers and JSON/SSE.
                initialized = await session.initialize()
                result = await session.call_tool(
                    "law_find", {"query": "Воздушный кодекс", "limit": 5}
                )
                if result.isError:
                    raise RuntimeError("Tool returned an MCP error; inspect it privately")
                text = next((b.text for b in result.content if b.type == "text"), None)
                # HTTP 200 does not by itself prove success: plain text can be a quota error.
                if text is None:
                    raise RuntimeError("Tool returned no text content")
                try:
                    data = json.loads(text)
                except json.JSONDecodeError:
                    raise RuntimeError("Tool returned non-JSON text; check quota/errors") from None
                if not isinstance(data, dict) or data.get("error") or data.get("ошибка"):
                    raise RuntimeError("Tool returned an application error")
                # Print counters, avoiding personal names in the sample output.
                print(json.dumps({"tool": "law_find", "candidates": len(data["candidates"]),
                                  "first": data["candidates"][0]["name"]}, ensure_ascii=False))
        # terminate_on_close=True (the default) sends DELETE for the MCP session.


if __name__ == "__main__":
    asyncio.run(main())

Output:

{
  "tool": "law_find",
  "candidates": 1,
  "first": "Воздушный кодекс Российской Федерации"
}
TypeScript · MCP SDK

client.ts

// Node.js 20+. npm install; AMAZINGCAT_TOKEN=... npm start
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";

async function main() {
  const token = process.env.AMAZINGCAT_TOKEN;
  if (!token) throw new Error("Set AMAZINGCAT_TOKEN in the server environment");
  const transport = new StreamableHTTPClientTransport(
    new URL("https://mcp.amazingcat.net/mcp"),
    { requestInit: { headers: { Authorization: `Bearer ${token}` } } },
  );
  const client = new Client({ name: "amazingcat-api-example", version: "1.0.0" });
  try {
    // connect() performs initialize + notifications/initialized.
    // The transport handles session/version headers and JSON/SSE.
    await client.connect(transport);
    const result = await client.callTool({
      name: "law_find", arguments: { query: "Воздушный кодекс", limit: 5 },
    }, undefined, { timeout: 120_000 });
    if (result.isError) throw new Error("Tool returned an MCP error; inspect it privately");
    const blocks = result.content as Array<{ type: string; text?: string }>;
    const text = blocks.find((block) => block.type === "text")?.text;
    if (!text) throw new Error("Tool returned no text content");
    let data: Record<string, unknown>;
    try {
      data = JSON.parse(text);
    } catch {
      throw new Error("Tool returned non-JSON text; check quota/errors");
    }
    if (!data || typeof data !== "object" || data.error || data["ошибка"]) {
      throw new Error("Tool returned an application error");
    }
    // Print counters, avoiding personal names in the sample output.
    const candidates = data.candidates as Array<{ name: string }>;
    console.log(JSON.stringify({ tool: "law_find", candidates: candidates.length,
      first: candidates[0].name }));
  } finally {
    try {
      if (transport.sessionId) await transport.terminateSession();
    } finally {
      await client.close();
    }
  }
}

main().catch((error: unknown) => {
  console.error(error instanceof Error ? error.message : "MCP example failed");
  process.exitCode = 1;
});

Output:

{
  "tool": "law_find",
  "candidates": 1,
  "first": "Воздушный кодекс Российской Федерации"
}
curl · JSON-RPC

curl.sh

#!/usr/bin/env bash
set -euo pipefail
: "${AMAZINGCAT_TOKEN:?Set your browser-issued token}"
# initialize: show headers and save them; the response body goes to initialize.json.
curl --fail-with-body 'https://mcp.amazingcat.net/mcp' -D - -o initialize.json \
  -H "Authorization: Bearer $AMAZINGCAT_TOKEN" \
  -H 'Accept: application/json, text/event-stream' -H 'Content-Type: application/json' \
  --data '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"cat-curl","version":"1"}}}' \
  | tee initialize.headers
# Copy the server's response header into a variable.
export MCP_SESSION_ID="$(awk 'tolower($1)=="mcp-session-id:" {gsub("\r","",$2);print $2}' initialize.headers)"
test -n "$MCP_SESSION_ID" || exit 1
curl --fail-with-body 'https://mcp.amazingcat.net/mcp' \
  -H "Authorization: Bearer $AMAZINGCAT_TOKEN" -H "Mcp-Session-Id: $MCP_SESSION_ID" \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -H 'Accept: application/json, text/event-stream' -H 'Content-Type: application/json' \
  --data '{"jsonrpc":"2.0","method":"notifications/initialized"}'
curl --fail-with-body -o law.json 'https://mcp.amazingcat.net/mcp' \
  -H "Authorization: Bearer $AMAZINGCAT_TOKEN" -H "Mcp-Session-Id: $MCP_SESSION_ID" \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -H 'Accept: application/json, text/event-stream' -H 'Content-Type: application/json' \
  --data '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"law_find","arguments":{"query":"Воздушный кодекс","limit":5}}}'
python3 - <<'PYCODE'
import json
from pathlib import Path
text=Path('law.json').read_text()
if text.lstrip().startswith('{'):
    reply=json.loads(text)
else:
    for event in text.replace('\r\n', '\n').split('\n\n'):
        data=[line[5:].lstrip(' ') for line in event.splitlines() if line.startswith('data:')]
        if not data: continue
        message=json.loads('\n'.join(data))
        if message.get('id')==2:
            reply=message
            break
    else: raise RuntimeError('No matching JSON-RPC response')
if reply.get('id')!=2: raise RuntimeError('No matching JSON-RPC response')
if reply.get('error'): raise RuntimeError(reply['error'])
result=reply['result']
if result.get('isError'): raise RuntimeError(result)
law=json.loads(next(b['text'] for b in result['content'] if b['type']=='text'))
print(json.dumps({'tool':'law_find','candidates':len(law['candidates']),'first':law['candidates'][0]['name']},ensure_ascii=False))
PYCODE

Output:

{
  "tool": "law_find",
  "candidates": 1,
  "first": "Воздушный кодекс Российской Федерации"
}

Python SDK: download sdk.py and requirements.txt, then run python -m pip install -r requirements.txt. TypeScript: download client.ts and package.json, then npm install and npm start. raw.py and session.py need requests; curl.sh needs curl, awk and Python 3. requirements.txt · package.json.

End-to-end examples

The human asks an AI agent. The agent reads tool descriptions, identifies provisions, selects filters and takes identifiers from the cat’s replies. MCP accepts structured tools/call arguments. Replies below show selected fields; an ellipsis marks a shortened passage.

A decision by case number and court

Connect the cat

Connect the free amazingcat MCP server (“the cat”) to your agent using the instructions. Without this connection, the agent cannot call the cat.

The human asks the agent

Ask the cat what the Omsk Regional Court held in case No. 33-2696/2024 and provide a link to the appellate ruling.

The agent prepares the search

The request identifies a specific appellate ruling. The agent resolves the court name to its code, retrieves the case record, then reads the operative part. No substantive-law filter is needed.

Step 1 · oblsud_courts

Select the exact Omsk Regional Court entry: code 55OS0000. The substring lookup also returns other court names.

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "oblsud_courts",
    "arguments": {
      "contains": "Омск"
    }
  }
}

The cat’s reply — selected fields:

{
  "суды": [
    {
      "код": "55OS0000",
      "суд": "Омский областной суд (Омская область)"
    },
    {
      "код": "70OS0000",
      "суд": "Томский областной суд (Томская область)"
    },
    {
      "код": "44OS0000",
      "суд": "Костромской областной суд (Костромская область)"
    }
  ]
}

Step 2 · oblsud_case

court comes from the first directory entry; limit=1 matches the request for one case. The next step takes act_key from акты[0].

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "oblsud_case",
    "arguments": {
      "number": "33-2696/2024",
      "limit": 1,
      "court": "55OS0000"
    }
  }
}

The cat’s reply — selected fields:

{
  "суд": {
    "код": "55OS0000",
    "наименование": "Омский областной суд (Омская область)",
    "сайт": "oblsud.oms.sudrf.ru"
  },
  "номер": "33-2696/2024",
  "результат": "РЕШЕНИЕ оставлено БЕЗ ИЗМЕНЕНИЯ",
  "акты": [
    {
      "act_key": "55OS0000|doc|27016959|1",
      "дата_документа": "06.05.2024",
      "вид_документа": "Определение"
    }
  ],
  "ссылка_на_карточку": "https://oblsud.oms.sudrf.ru/modules.php?name=sud_delo&srv_num=1&name_op=case&case_id=30481235&case_uid=6e70b24e-84d8-4c2d-bfed-f9af62c8e696&delo_id=5&new=5"
}

Step 3 · oblsud_act

Copy act_key from the case record above. part=resolution retrieves the operative section that answers what the court decided.

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "oblsud_act",
    "arguments": {
      "part": "resolution",
      "act_key": "55OS0000|doc|27016959|1"
    }
  }
}

The cat’s reply — selected fields:

{
  "act_id": 1963772,
  "act_key": "55OS0000|doc|27016959|1",
  "номер": "33-2696/2024",
  "суд": "Омский областной суд (Омская область)",
  "дата": "2024-05-06",
  "часть": "resolution",
  "текст": " Руководствуясь статьями 328, 329 Гражданского процессуального кодекса Российской Федерации, судебная коллегия\n ОПРЕДЕЛИЛА:\n решение Кировского районного суда г. Омска от 26 декабря 2023 года оставить без изменения, апелляционную жалобу К*******а А.В. - без удовлетворения.…\nМотивированное определение изготовлено в окончательной форме 14.06.2024.",
  "источник": "https://oblsud.oms.sudrf.ru/modules.php?name=sud_delo&name_op=doc&number=27016959&delo_id=5&new=5&text_number=1&srv_num=1"
}

The agent replies to the human

The Kirovsky District Court of Omsk judgment dated 26 December 2023 was upheld and the appeal dismissed. The case number is 33-2696/2024. The reasoned ruling was prepared on 14 June 2024. The document link is in the response field источник.

Direct API calls for this chain

Session setup

curl --fail-with-body 'https://mcp.amazingcat.net/mcp' \
  -H 'Authorization: Bearer YOUR_AMAZINGCAT_TOKEN' \
  -H 'Mcp-Session-Id: YOUR_MCP_SESSION_ID' \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Content-Type: application/json' \
  --data-raw '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "oblsud_courts", "arguments": {"contains": "Омск"}}}'
curl --fail-with-body 'https://mcp.amazingcat.net/mcp' \
  -H 'Authorization: Bearer YOUR_AMAZINGCAT_TOKEN' \
  -H 'Mcp-Session-Id: YOUR_MCP_SESSION_ID' \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Content-Type: application/json' \
  --data-raw '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "oblsud_case", "arguments": {"number": "33-2696/2024", "limit": 1, "court": "55OS0000"}}}'
curl --fail-with-body 'https://mcp.amazingcat.net/mcp' \
  -H 'Authorization: Bearer YOUR_AMAZINGCAT_TOKEN' \
  -H 'Mcp-Session-Id: YOUR_MCP_SESSION_ID' \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Content-Type: application/json' \
  --data-raw '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "oblsud_act", "arguments": {"part": "resolution", "act_key": "55OS0000|doc|27016959|1"}}}'

Find a case by parties, court and judge

Connect the cat

Connect the free amazingcat MCP server (“the cat”) to your agent using the instructions. Without this connection, the agent cannot call the cat.

The human asks the agent

Ask the cat to find Alexey Valeryevich Kuznetsov’s claim against PJSC Aeroflot in the Kirovsky District Court of Omsk, heard by Judge Bondarenko.

The agent prepares the search

The agent identifies the claimant, defendant, court and judge. It resolves the court code, then the claimant’s party_id and the judge’s judge_id. raysud_search accepts these filters and text terms; raysud_case retrieves the matched case by act_id. A legal-provision filter is unnecessary for identifying the case. Names in the reply remain masked.

Step 1 · raysud_courts

The agent selects the Kirovsky District Court of Omsk. Its directory entry supplies court code 55RS0001.

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "raysud_courts",
    "arguments": {
      "contains": "Кировский",
      "region": "Омская",
      "limit": 5
    }
  }
}

The cat’s reply — selected fields:

{
  "суды": [
    {
      "код": "55RS0001",
      "суд": "Кировский районный суд г. Омска (Омская область)",
      "регион": "Омская область"
    }
  ]
}

One additional entry is omitted from this abbreviated reply.

Step 2 · raysud_parties

The name comes from the user’s request. The directory returns a masked name and a party_id for the next search.

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "raysud_parties",
    "arguments": {
      "name": "Кузнецов Алексей Валерьевич",
      "limit": 5,
      "court": "55RS0001"
    }
  }
}

The cat’s reply — selected fields:

{
  "стороны": [
    {
      "party_id": "517116216902681320",
      "сторона": "К******в А*****й В********ч",
      "организация": false
    }
  ]
}

Step 3 · raysud_judges

Look up Judge Bondarenko in the selected court; take judge_id from the reply.

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "raysud_judges",
    "arguments": {
      "surname": "Бондаренко",
      "limit": 5,
      "court": "55RS0001"
    }
  }
}

The cat’s reply — selected fields:

{
  "судьи": [
    {
      "judge_id": "1142789821684608340",
      "судья": "бондаренко е.в.",
      "суд": "55RS0001"
    }
  ]
}

Step 4 · raysud_search

Combine the party, court and judge filters with Aeroflot in the text. Request up to ten candidates for identification; one decision is returned.

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "raysud_search",
    "arguments": {
      "query": "\"Аэрофлот\"",
      "limit": 10,
      "detail": "brief",
      "court": "55RS0001",
      "party": "517116216902681320",
      "judge_id": "1142789821684608340"
    }
  }
}

The cat’s reply — selected fields:

{
  "найдено": 1,
  "показано": 1,
  "результаты": [
    {
      "act_id": 14137950,
      "case_id": 28067732,
      "номер": "2-249/2026 (2-5812/2025;) ~ М-4929/2025",
      "дата_документа": "2026-03-05",
      "суд": {
        "код": "55RS0001",
        "суд": "Кировский районный суд г. Омска (Омская область)",
        "регион": "Омская область",
        "сайт": "kirovcourt.oms.sudrf.ru"
      },
      "ссылка_на_акт": "https://kirovcourt--oms.sudrf.ru/modules.php?delo_id=1540005&name=sud_delo&name_op=doc&new=&number=347614214&srv_num=1&text_number=1"
    }
  ]
}

Step 5 · raysud_case

Use the first search result’s act_id to retrieve its case record, including the case number, judge, parties and outcome.

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "raysud_case",
    "arguments": {
      "limit": 1,
      "act_id": 14137950
    }
  }
}

The cat’s reply — selected fields:

{
  "case_id": 28067732,
  "номер": "2-249/2026 (2-5812/2025;) ~ М-4929/2025",
  "судья": "Бондаренко Е.В.",
  "стороны": "Отношения, связанные с защитой прав потребителей → О защите прав потребителей → - из договоров в сфере: → транспортных услуг ИСТЕЦ(ЗАЯВИТЕЛЬ): К******в А*****й В********ч ОТВЕТЧИК: ПАО Аэрофлот",
  "результат": "Иск (заявление, жалоба) УДОВЛЕТВОРЕН ЧАСТИЧНО",
  "ссылка_на_карточку": "https://kirovcourt--oms.sudrf.ru/modules.php?name=sud_delo&srv_num=1&name_op=case&case_id=330839593&case_uid=1a022b3b-f02a-45f3-aa4b-ecee9fab773c&delo_id=1540005&new="
}

The agent replies to the human

Case No. 2-249/2026 (2-5812/2025;) ~ М-4929/2025 was found. The record names Judge Bondarenko E.V., defendant PJSC Aeroflot and claimant К******в А*****й В********ч. The claim was granted in part. The reply includes the case-record link. A matching masked name alone does not establish identity.

Direct API calls for this chain

Session setup

curl --fail-with-body 'https://mcp.amazingcat.net/mcp' \
  -H 'Authorization: Bearer YOUR_AMAZINGCAT_TOKEN' \
  -H 'Mcp-Session-Id: YOUR_MCP_SESSION_ID' \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Content-Type: application/json' \
  --data-raw '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "raysud_courts", "arguments": {"contains": "Кировский", "region": "Омская", "limit": 5}}}'
curl --fail-with-body 'https://mcp.amazingcat.net/mcp' \
  -H 'Authorization: Bearer YOUR_AMAZINGCAT_TOKEN' \
  -H 'Mcp-Session-Id: YOUR_MCP_SESSION_ID' \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Content-Type: application/json' \
  --data-raw '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "raysud_parties", "arguments": {"name": "Кузнецов Алексей Валерьевич", "limit": 5, "court": "55RS0001"}}}'
curl --fail-with-body 'https://mcp.amazingcat.net/mcp' \
  -H 'Authorization: Bearer YOUR_AMAZINGCAT_TOKEN' \
  -H 'Mcp-Session-Id: YOUR_MCP_SESSION_ID' \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Content-Type: application/json' \
  --data-raw '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "raysud_judges", "arguments": {"surname": "Бондаренко", "limit": 5, "court": "55RS0001"}}}'
curl --fail-with-body 'https://mcp.amazingcat.net/mcp' \
  -H 'Authorization: Bearer YOUR_AMAZINGCAT_TOKEN' \
  -H 'Mcp-Session-Id: YOUR_MCP_SESSION_ID' \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Content-Type: application/json' \
  --data-raw '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "raysud_search", "arguments": {"query": "\"Аэрофлот\"", "limit": 10, "detail": "brief", "court": "55RS0001", "party": "517116216902681320", "judge_id": "1142789821684608340"}}}'
curl --fail-with-body 'https://mcp.amazingcat.net/mcp' \
  -H 'Authorization: Bearer YOUR_AMAZINGCAT_TOKEN' \
  -H 'Mcp-Session-Id: YOUR_MCP_SESSION_ID' \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Content-Type: application/json' \
  --data-raw '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "raysud_case", "arguments": {"limit": 1, "act_id": 14137950}}}'

District-court cases: outcomes and awards

Connect the cat

Connect the free amazingcat MCP server (“the cat”) to your agent using the instructions. Without this connection, the agent cannot call the cat.

The human asks the agent

How many district-court cases has PJSC Aeroflot lost over cancelled Ekaterinburg–Phuket bookings? Ask the cat to start with the outcome distribution and check five decisions.

The agent prepares the search

The agent identifies a dispute over cancelled flight bookings. It checks Air Code Articles 103 and 105 (contract and ticket), 107 (termination by the carrier) and 108 (withdrawal by the passenger); these grounds differ. It also checks Civil Code Articles 310, 393 and 786 and Consumer Protection Law Articles 13 and 15. It then uses raysud_search directly and groups outcomes with raysud_aggregate. Aggregation counts decisions, not distinct cases. To count lost cases, the agent checks the parties and operative parts and combines decisions from the same case. The provisions guide legal analysis; they do not replace the carrier and route in the search.

Step 1 · law_find

Request up to five candidates; candidates[0].name supplies the law name for the next call.

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "law_find",
    "arguments": {
      "query": "Воздушный кодекс",
      "limit": 5
    }
  }
}

The cat’s reply — selected fields:

{
  "query": "Воздушный кодекс",
  "candidates": [
    {
      "docid": 36225,
      "name": "Воздушный кодекс Российской Федерации",
      "source_url": "https://mcp.amazingcat.net/russian_law/vk_rf"
    }
  ]
}

Step 2 · law_get_text

The code name comes from law_find. The four articles distinguish the contract and termination grounds; the text budget accommodates them.

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "law_get_text",
    "arguments": {
      "articles": "103,105,107,108",
      "max_chars": 24000,
      "act": "Воздушный кодекс Российской Федерации"
    }
  }
}

The cat’s reply — selected fields:

{
  "articles": [
    {
      "article": "103",
      "text": "Статья 103. Договор воздушной перевозки пассажира. Договор воздушной перевозки груза. Договор воздушной перевозки почты\n1. По договору воздушной перевозки пассажира перевозчик обязуется перевезти пассажира воздушного судна в пункт назначения с предоставлением ему места на воздушном судне, совершающем рейс, указанный в билете, а в случае сдачи пассажиром воздушного судна багажа …"
    },
    {
      "article": "105",
      "text": "Статья 105. Перевозочные документы\n1. К перевозочным документам относятся билет, багажная квитанция, грузовая накладная, почтовая накладная, иные документы, используемые при оказании услуг по воздушной перевозке пассажиров, багажа, груза, почты и предусмотренные нормативными правовыми актами федерального органа исполнительной власти, уполномоченного в области транспорта.\n2. Дог…"
    },
    {
      "article": "107",
      "text": "Статья 107. Прекращение по инициативе перевозчика действия договора воздушной перевозки пассажира, договора воздушной перевозки груза\n1. Перевозчик может в одностороннем порядке расторгнуть договор воздушной перевозки пассажира, договор воздушной перевозки груза в следующих случаях:\n1) нарушение пассажиром, грузовладельцем, грузоотправителем паспортных, таможенных, санитарных и…"
    },
    {
      "article": "108",
      "text": "Статья 108. Прекращение по инициативе пассажира действия договора воздушной перевозки пассажира\n1. В случае отказа пассажира от воздушной перевозки по причинам, не предусмотренным пунктом 2 настоящей статьи, возврат пассажиру провозной платы осуществляется в следующем порядке:\n1) если пассажиром заключен договор воздушной перевозки пассажира, предусматривающий условие о возврат…"
    }
  ]
}

Step 3 · law_get_text

Check the rules on unilateral refusal to perform obligations, damages and passenger carriage. ГК is the abbreviation for the Civil Code.

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "law_get_text",
    "arguments": {
      "act": "ГК",
      "articles": "310,393,786",
      "max_chars": 13000
    }
  }
}

The cat’s reply — selected fields:

{
  "articles": [
    {
      "article": "310",
      "text": "Статья 310. Недопустимость одностороннего отказа от исполнения обязательства\n1. Односторонний отказ от исполнения обязательства и одностороннее изменение его условий не допускаются, за исключением случаев, предусмотренных настоящим Кодексом, другими законами или иными правовыми актами.\n2. Одностороннее изменение условий обязательства, связанного с осуществлением всеми его сторо…"
    },
    {
      "article": "393",
      "text": "Статья 393. Обязанность должника возместить убытки\n1. Должник обязан возместить кредитору убытки, причиненные неисполнением или ненадлежащим исполнением обязательства.\nЕсли иное не установлено законом, использование кредитором иных способов защиты нарушенных прав, предусмотренных законом или договором, не лишает его права требовать от должника возмещения убытков, причиненных не…"
    },
    {
      "article": "786",
      "text": "Статья 786. Договор перевозки пассажира\n1. По договору перевозки пассажира перевозчик обязуется перевезти пассажира в пункт назначения, а в случае сдачи пассажиром багажа также доставить багаж в пункт назначения и выдать его управомоченному на получение багажа лицу; пассажир обязуется уплатить установленную плату за проезд, а при сдаче багажа и за провоз багажа.\n2. Заключение д…"
    }
  ]
}

Step 4 · law_get_text

Check liability and compensation for non-pecuniary damage; the agent must assess their applicability to the facts.

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "law_get_text",
    "arguments": {
      "act": "Закон о защите прав потребителей",
      "articles": "13,15",
      "max_chars": 13000
    }
  }
}

The cat’s reply — selected fields:

{
  "articles": [
    {
      "article": "13",
      "text": "Статья 13. Ответственность изготовителя (исполнителя, продавца, уполномоченной организации или уполномоченного индивидуального предпринимателя, импортера , владельца агрегатора ) за нарушение прав потребителей\n(Наименование в редакции федеральных законов от 21.12.2004 № 171-ФЗ , от 31.07.2025 № 290-ФЗ )\n1. За нарушение прав потребителей изготовитель (исполнитель, продавец, упол…"
    },
    {
      "article": "15",
      "text": "Статья 15. Компенсация морального вреда\nМоральный вред, причиненный потребителю вследствие нарушения изготовителем (исполнителем, продавцом, уполномоченной организацией или уполномоченным индивидуальным предпринимателем, импортером , владельцем агрегатора ) прав потребителя, предусмотренных законами и правовыми актами Российской Федерации, регулирующими отношения в области защи…"
    }
  ]
}

Step 5 · raysud_aggregate

Group the same text query by outcome. limit=10 limits the number of groups. The unit is a court decision, so these counts alone do not answer how many cases the defendant lost.

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "raysud_aggregate",
    "arguments": {
      "query": "\"Аэрофлот\" \"Екатеринбург\" \"Пхукет\" \"бронирование\"",
      "by": "outcome",
      "limit": 10
    }
  }
}

The cat’s reply — selected fields:

{
  "найдено": 201,
  "распределение": [
    {
      "значение": "удовлетворено частично",
      "актов": 118
    },
    {
      "значение": "иное",
      "актов": 61
    },
    {
      "значение": "удовлетворено",
      "актов": 18
    },
    {
      "значение": "отказано",
      "актов": 4
    }
  ]
}

Step 6 · raysud_search

Search decisions mentioning the carrier, route and booking. The user asks to start with five decisions, so limit=5. The reply supplies case numbers and act_id values.

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "raysud_search",
    "arguments": {
      "query": "\"Аэрофлот\" \"Екатеринбург\" \"Пхукет\" \"бронирование\"",
      "limit": 5,
      "detail": "brief"
    }
  }
}

The cat’s reply — selected fields:

{
  "найдено": 201,
  "показано": 5,
  "результаты": [
    {
      "act_id": 37900030,
      "case_id": 51478832,
      "номер": "2-2268/2024 ~ М-1224/2024",
      "дата_документа": "2024-07-17",
      "суд": {
        "код": "59RS0005",
        "суд": "Мотовилихинский районный суд г. Перми (Пермский край)",
        "регион": "Пермский край",
        "сайт": "motovil.perm.sudrf.ru"
      },
      "ссылка_на_акт": "https://motovil--perm.sudrf.ru/modules.php?delo_id=1540005&name=sud_delo&name_op=doc&new=&number=365649689&srv_num=1&text_number=1"
    },
    {
      "act_id": 19299446,
      "case_id": 38140314,
      "номер": "2-1455/2024 ~ М-923/2024",
      "дата_документа": "2024-07-10",
      "суд": {
        "код": "92RS0001",
        "суд": "Балаклавский районный суд (Город Севастополь)",
        "регион": "Город Севастополь",
        "сайт": "balaklavskiy.sev.sudrf.ru"
      },
      "ссылка_на_акт": "https://balaklavskiy--sev.sudrf.ru/modules.php?delo_id=1540005&name=sud_delo&name_op=doc&new=&number=62097662&srv_num=1&text_number=1"
    },
    {
      "act_id": 21221376,
      "case_id": 41857888,
      "номер": "2-1284/2024 ~ М-375/2024",
      "дата_документа": "2024-07-22",
      "суд": {
        "код": "59RS0003",
        "суд": "Кировский районный суд г. Перми (Пермский край)",
        "регион": "Пермский край",
        "сайт": "kirov.perm.sudrf.ru"
      },
      "ссылка_на_акт": "https://kirov--perm.sudrf.ru/modules.php?delo_id=1540005&name=sud_delo&name_op=doc&new=&number=383515098&srv_num=1&text_number=1"
    },
    {
      "act_id": 16201876,
      "case_id": 32121026,
      "номер": "2-1208/2024 ~ М-2945/2023",
      "дата_документа": "",
      "суд": {
        "код": "66RS0053",
        "суд": "Сысертский районный суд (Свердловская область)",
        "регион": "Свердловская область",
        "сайт": "sysertsky.svd.sudrf.ru"
      },
      "ссылка_на_акт": "https://sysertsky--svd.sudrf.ru/modules.php?delo_id=1540005&name=sud_delo&name_op=doc&new=&number=513750932&srv_num=1&text_number=1"
    },
    {
      "act_id": 32036828,
      "case_id": 50692832,
      "номер": "2-1083/2024 (2-5747/2023;) ~ М-5033/2023",
      "дата_документа": "2024-02-29",
      "суд": {
        "код": "59RS0004",
        "суд": "Ленинский районный суд г. Перми (Пермский край)",
        "регион": "Пермский край",
        "сайт": "lenin.perm.sudrf.ru"
      },
      "ссылка_на_акт": "https://lenin--perm.sudrf.ru/modules.php?delo_id=1540005&name=sud_delo&name_op=doc&new=&number=365347217&srv_num=1&text_number=1"
    }
  ],
  "next_cursor": 5
}

Step 7 · raysud_acts

Build act_ids from the five search results. Read the operative parts to identify the defendant and the relief awarded. Compare court/case-number pairs so that multiple decisions in one case are not counted as separate losses.

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "raysud_acts",
    "arguments": {
      "part": "resolution",
      "limit": 5,
      "budget": 60000,
      "act_ids": "37900030,19299446,21221376,16201876,32036828"
    }
  }
}

The cat’s reply — selected fields:

{
  "показано": 5,
  "акты": [
    {
      "act_id": 37900030,
      "номер_дела": "2-2268/2024 ~ М-1224/2024",
      "текст": "…Взыскать с публичного акционерного общества «Аэрофлот -Российские авиалинии» (ОГРН № ) в пользу К******а Д****а В*********а ( ДД.ММ.ГГГГ года рождения, СНИЛС № ) компенсацию морального вреда в размере 10 000 руб., штраф в размере 5 000 руб.\n Взыскать с публичного акционерного общества «Аэрофлот - Российские авиалинии» (ОГРН № ) в пользу С*******й М***и С*******ы ( ДД.ММ.ГГГГ года рождения, СНИЛС № ) компенсацию морального вреда в размере 10 000 руб., штраф в размере 5 000 руб.\n Взыскать с публичного акционерного общества «Аэрофлот - Российские авиалинии» (ОГРН № ) государственную пошлину в размере 600 руб.\n Возложить обязанность на К******а Д****а В*********а, С******у М***ю С*******у оплатить договоры воздушной перевозки пассажиров общей стоимостью 39 574 руб.\n В удовлетворении остальной части исковых требований отказать.\n Решение может быть обжаловано в апелляционном порядке в Пермский краевой суд в месячный срок со дня составления мо…"
    },
    {
      "act_id": 19299446,
      "номер_дела": "2-1455/2024 ~ М-923/2024",
      "текст": "…Взыскать с Публичного акционерного общества «Аэрофлот» (ИНН 7712040126) в пользу З******й И. Д. (паспорт РФ [паспортные данные скрыты]) убытки в сумме 32 968,00 руб., неустойку за просрочку возмещения убытков в сумме 32 968,00 руб., компенсацию морального вреда в сумме 5 000,00 руб., штраф в размере 36 468,00 руб., а всего 107 404,00 руб.\n Взыскать с Публичного акционерного общества «Аэрофлот» (ИНН 7712040126) в пользу З*****а В. Л. (паспорт РФ [паспортные данные скрыты]) убытки в сумме 32 968,00 руб., неустойку за просрочку возмещения убытков в сумме 32 968,00 руб., компенсацию морального вреда в сумме 5 000,00 руб., штраф в размере 36 468,00 руб., а всего 107 404,00 руб.\n В удовлетворении остальной части исковых требований о взыскании морального вреда – отказать. \n Взыскать с Публичного акционерного общества «Аэрофлот» (ИНН 7712040126) в доход местного бюджета государственную пошлину в размере 4 137,00 руб.\n Решение может быть обжалов…"
    },
    {
      "act_id": 21221376,
      "номер_дела": "2-1284/2024 ~ М-375/2024",
      "текст": "…Взыскать с Публичного акционерного общества «Аэрофлот – российские авиалинии» (ОГРН 1027700092661) в пользу Д***********й С.А. компенсацию морального вреда в размере 10 000 руб., штраф в сумме 5 000 руб.\n Взыскать с Публичного акционерного общества «Аэрофлот – Российские авиалинии» (ОГРН 1027700092661) в доход бюджета государственную пошлину в размере 600 руб.\n Возложить обязанность на Д**********у С.А. оплатить договор воздушной перевозки пассажиров общей стоимостью 29955 руб.\n В удовлетворении остальной части исковых требований Д***********й С.А. отказать.\n Решение в течение месяца со дня принятия в окончательной форме может быть обжаловано в апелляционном порядке в Пермский краевой суд через Кировский районный суд г.Перми.\n Судья Н.М. Швец \n Мотивированное решение составлено 01 августа 2024 года"
    },
    {
      "act_id": 16201876,
      "номер_дела": "2-1208/2024 ~ М-2945/2023",
      "текст": "…Взыскать с Публичного акционерного общества «Аэрофлот - российские авиалинии» (ПАО «Аэрофлот») (ИНН 7712040126, ОГРН 1027700092661) в пользу Б****а ФИО12 …сумму убытков в размере 115 879 руб., неустойку, предусмотренную ч.5 ст. 28 Закона РФ от 07.02.1992 № 2300-1 «О защите прав потребителей», в размере 76 480 руб. 14 коп., компенсацию морального вреда в размере 5 000 руб., штраф в размере 98 679 руб. 57 коп., а также судебные расходы по направлению почтовых отправлений в размере 425 руб. 10 коп., итого 296 463 (двести девяносто шесть тысяч четыреста шестьдесят три) рубля 81 копейка. \n В удовлетворении остальной части заявленных требований истцам отказать.\n Взыскать с Публичного акционерного общества «Аэрофлот - российские авиалинии» (ПАО «Аэрофлот») (ИНН 7712040126, ОГРН 1027700092661) в пользу местного бюджета госпошлину в размере 5 347 (пять тысяч триста сорок семь) рублей 18 копеек.\n Решение может быть обжаловано в Свердловский областной суд в течение месяца со дня принятия решения суда в окончательной форме путем подачи апелляционной жалобы через Сысертский районный суд, вынесший реше…"
    },
    {
      "act_id": 32036828,
      "номер_дела": "2-1083/2024 (2-5747/2023;) ~ М-5033/2023",
      "текст": "…Взыскать с публичного акционерного общества «Аэрофлот - российские авиалинии» в пользу ФИО3 , ФИО2 компенсацию морального вреда по 10 000 руб. в пользу каждого, штраф по 5000 руб. в пользу каждого.\n Взыскать с публичного акционерного общества «Аэрофлот - российские авиалинии» в доход местного бюджета государственную пошлину в размере 300 руб.\n Обязать ФИО3 , ФИО2 оплатить договоры воздушной перевозки стоимостью 18 625 руб. каждый.\n Решение суда может быть обжаловано в Пермский краевой суд через Ленинский районный суд г. Перми в течение месяца со дня принятия решения в окончательной форме.\n Копия верна\n Судья Ю.Н.Шпигарь\n Мотивированное решение изготовлено 07.03.2024"
    }
  ],
  "next_cursor": null
}

The agent replies to the human

First step: the text query returned 201 court decisions: 118 in cases where the claim was granted in part, 18 granted, four dismissed, and 61 with another outcome. In the five decisions read, claims against Aeroflot were granted in part: five distinct cases with awards to claimants. The figure 136 (118 + 18) is not a count of lost cases. Decisions must first be grouped by case and checked for the defendant and the relief awarded. Continue from the next_cursor returned by search.

Direct API calls for this chain

Session setup

curl --fail-with-body 'https://mcp.amazingcat.net/mcp' \
  -H 'Authorization: Bearer YOUR_AMAZINGCAT_TOKEN' \
  -H 'Mcp-Session-Id: YOUR_MCP_SESSION_ID' \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Content-Type: application/json' \
  --data-raw '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "law_find", "arguments": {"query": "Воздушный кодекс", "limit": 5}}}'
curl --fail-with-body 'https://mcp.amazingcat.net/mcp' \
  -H 'Authorization: Bearer YOUR_AMAZINGCAT_TOKEN' \
  -H 'Mcp-Session-Id: YOUR_MCP_SESSION_ID' \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Content-Type: application/json' \
  --data-raw '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "law_get_text", "arguments": {"articles": "103,105,107,108", "max_chars": 24000, "act": "Воздушный кодекс Российской Федерации"}}}'
curl --fail-with-body 'https://mcp.amazingcat.net/mcp' \
  -H 'Authorization: Bearer YOUR_AMAZINGCAT_TOKEN' \
  -H 'Mcp-Session-Id: YOUR_MCP_SESSION_ID' \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Content-Type: application/json' \
  --data-raw '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "law_get_text", "arguments": {"act": "ГК", "articles": "310,393,786", "max_chars": 13000}}}'
curl --fail-with-body 'https://mcp.amazingcat.net/mcp' \
  -H 'Authorization: Bearer YOUR_AMAZINGCAT_TOKEN' \
  -H 'Mcp-Session-Id: YOUR_MCP_SESSION_ID' \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Content-Type: application/json' \
  --data-raw '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "law_get_text", "arguments": {"act": "Закон о защите прав потребителей", "articles": "13,15", "max_chars": 13000}}}'
curl --fail-with-body 'https://mcp.amazingcat.net/mcp' \
  -H 'Authorization: Bearer YOUR_AMAZINGCAT_TOKEN' \
  -H 'Mcp-Session-Id: YOUR_MCP_SESSION_ID' \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Content-Type: application/json' \
  --data-raw '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "raysud_aggregate", "arguments": {"query": "\"Аэрофлот\" \"Екатеринбург\" \"Пхукет\" \"бронирование\"", "by": "outcome", "limit": 10}}}'
curl --fail-with-body 'https://mcp.amazingcat.net/mcp' \
  -H 'Authorization: Bearer YOUR_AMAZINGCAT_TOKEN' \
  -H 'Mcp-Session-Id: YOUR_MCP_SESSION_ID' \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Content-Type: application/json' \
  --data-raw '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "raysud_search", "arguments": {"query": "\"Аэрофлот\" \"Екатеринбург\" \"Пхукет\" \"бронирование\"", "limit": 5, "detail": "brief"}}}'
curl --fail-with-body 'https://mcp.amazingcat.net/mcp' \
  -H 'Authorization: Bearer YOUR_AMAZINGCAT_TOKEN' \
  -H 'Mcp-Session-Id: YOUR_MCP_SESSION_ID' \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Content-Type: application/json' \
  --data-raw '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "raysud_acts", "arguments": {"part": "resolution", "limit": 5, "budget": 60000, "act_ids": "37900030,19299446,21221376,16201876,32036828"}}}'

Compare awards in district-court judgments

Connect the cat

Connect the free amazingcat MCP server (“the cat”) to your agent using the instructions. Without this connection, the agent cannot call the cat.

The human asks the agent

What is the largest amount awarded to a single claimant in claims against PJSC Aeroflot over cancelled Ekaterinburg–Phuket bookings? Ask the cat to start by comparing five district-court judgments.

The agent prepares the search

The agent identifies the carrier, route and the amount actually awarded. It checks the provisions on carriage contracts, termination, damages and consumer protection. raysud_aggregate groups decisions by outcome but does not compute monetary maxima. The agent therefore retrieves five judgments with raysud_search and reads their operative parts with raysud_acts. Identifiers come from search; it compares one award per claimant in each case.

Step 1 · law_find

Request up to five candidates; candidates[0].name supplies the law name for the next call.

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "law_find",
    "arguments": {
      "query": "Воздушный кодекс",
      "limit": 5
    }
  }
}

The cat’s reply — selected fields:

{
  "query": "Воздушный кодекс",
  "candidates": [
    {
      "docid": 36225,
      "name": "Воздушный кодекс Российской Федерации",
      "source_url": "https://mcp.amazingcat.net/russian_law/vk_rf"
    }
  ]
}

Step 2 · law_get_text

The code name comes from law_find. The four articles distinguish the contract and termination grounds; the text budget accommodates them.

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "law_get_text",
    "arguments": {
      "articles": "103,105,107,108",
      "max_chars": 24000,
      "act": "Воздушный кодекс Российской Федерации"
    }
  }
}

The cat’s reply — selected fields:

{
  "articles": [
    {
      "article": "103",
      "text": "Статья 103. Договор воздушной перевозки пассажира. Договор воздушной перевозки груза. Договор воздушной перевозки почты\n1. По договору воздушной перевозки пассажира перевозчик обязуется перевезти пассажира воздушного судна в пункт назначения с предоставлением ему места на воздушном судне, совершающем рейс, указанный в билете, а в случае сдачи пассажиром воздушного судна багажа …"
    },
    {
      "article": "105",
      "text": "Статья 105. Перевозочные документы\n1. К перевозочным документам относятся билет, багажная квитанция, грузовая накладная, почтовая накладная, иные документы, используемые при оказании услуг по воздушной перевозке пассажиров, багажа, груза, почты и предусмотренные нормативными правовыми актами федерального органа исполнительной власти, уполномоченного в области транспорта.\n2. Дог…"
    },
    {
      "article": "107",
      "text": "Статья 107. Прекращение по инициативе перевозчика действия договора воздушной перевозки пассажира, договора воздушной перевозки груза\n1. Перевозчик может в одностороннем порядке расторгнуть договор воздушной перевозки пассажира, договор воздушной перевозки груза в следующих случаях:\n1) нарушение пассажиром, грузовладельцем, грузоотправителем паспортных, таможенных, санитарных и…"
    },
    {
      "article": "108",
      "text": "Статья 108. Прекращение по инициативе пассажира действия договора воздушной перевозки пассажира\n1. В случае отказа пассажира от воздушной перевозки по причинам, не предусмотренным пунктом 2 настоящей статьи, возврат пассажиру провозной платы осуществляется в следующем порядке:\n1) если пассажиром заключен договор воздушной перевозки пассажира, предусматривающий условие о возврат…"
    }
  ]
}

Step 3 · law_get_text

Check the rules on unilateral refusal to perform obligations, damages and passenger carriage. ГК is the abbreviation for the Civil Code.

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "law_get_text",
    "arguments": {
      "act": "ГК",
      "articles": "310,393,786",
      "max_chars": 13000
    }
  }
}

The cat’s reply — selected fields:

{
  "articles": [
    {
      "article": "310",
      "text": "Статья 310. Недопустимость одностороннего отказа от исполнения обязательства\n1. Односторонний отказ от исполнения обязательства и одностороннее изменение его условий не допускаются, за исключением случаев, предусмотренных настоящим Кодексом, другими законами или иными правовыми актами.\n2. Одностороннее изменение условий обязательства, связанного с осуществлением всеми его сторо…"
    },
    {
      "article": "393",
      "text": "Статья 393. Обязанность должника возместить убытки\n1. Должник обязан возместить кредитору убытки, причиненные неисполнением или ненадлежащим исполнением обязательства.\nЕсли иное не установлено законом, использование кредитором иных способов защиты нарушенных прав, предусмотренных законом или договором, не лишает его права требовать от должника возмещения убытков, причиненных не…"
    },
    {
      "article": "786",
      "text": "Статья 786. Договор перевозки пассажира\n1. По договору перевозки пассажира перевозчик обязуется перевезти пассажира в пункт назначения, а в случае сдачи пассажиром багажа также доставить багаж в пункт назначения и выдать его управомоченному на получение багажа лицу; пассажир обязуется уплатить установленную плату за проезд, а при сдаче багажа и за провоз багажа.\n2. Заключение д…"
    }
  ]
}

Step 4 · law_get_text

Check liability and compensation for non-pecuniary damage; the agent must assess their applicability to the facts.

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "law_get_text",
    "arguments": {
      "act": "Закон о защите прав потребителей",
      "articles": "13,15",
      "max_chars": 13000
    }
  }
}

The cat’s reply — selected fields:

{
  "articles": [
    {
      "article": "13",
      "text": "Статья 13. Ответственность изготовителя (исполнителя, продавца, уполномоченной организации или уполномоченного индивидуального предпринимателя, импортера , владельца агрегатора ) за нарушение прав потребителей\n(Наименование в редакции федеральных законов от 21.12.2004 № 171-ФЗ , от 31.07.2025 № 290-ФЗ )\n1. За нарушение прав потребителей изготовитель (исполнитель, продавец, упол…"
    },
    {
      "article": "15",
      "text": "Статья 15. Компенсация морального вреда\nМоральный вред, причиненный потребителю вследствие нарушения изготовителем (исполнителем, продавцом, уполномоченной организацией или уполномоченным индивидуальным предпринимателем, импортером , владельцем агрегатора ) прав потребителя, предусмотренных законами и правовыми актами Российской Федерации, регулирующими отношения в области защи…"
    }
  ]
}

Step 5 · raysud_search

Search decisions mentioning the carrier, route and booking. The user asks to start with five decisions, so limit=5. The reply supplies case numbers and act_id values.

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "raysud_search",
    "arguments": {
      "query": "\"Аэрофлот\" \"Екатеринбург\" \"Пхукет\" \"бронирование\"",
      "limit": 5,
      "detail": "brief"
    }
  }
}

The cat’s reply — selected fields:

{
  "найдено": 201,
  "показано": 5,
  "результаты": [
    {
      "act_id": 37900030,
      "case_id": 51478832,
      "номер": "2-2268/2024 ~ М-1224/2024",
      "дата_документа": "2024-07-17",
      "суд": {
        "код": "59RS0005",
        "суд": "Мотовилихинский районный суд г. Перми (Пермский край)",
        "регион": "Пермский край",
        "сайт": "motovil.perm.sudrf.ru"
      },
      "ссылка_на_акт": "https://motovil--perm.sudrf.ru/modules.php?delo_id=1540005&name=sud_delo&name_op=doc&new=&number=365649689&srv_num=1&text_number=1"
    },
    {
      "act_id": 19299446,
      "case_id": 38140314,
      "номер": "2-1455/2024 ~ М-923/2024",
      "дата_документа": "2024-07-10",
      "суд": {
        "код": "92RS0001",
        "суд": "Балаклавский районный суд (Город Севастополь)",
        "регион": "Город Севастополь",
        "сайт": "balaklavskiy.sev.sudrf.ru"
      },
      "ссылка_на_акт": "https://balaklavskiy--sev.sudrf.ru/modules.php?delo_id=1540005&name=sud_delo&name_op=doc&new=&number=62097662&srv_num=1&text_number=1"
    },
    {
      "act_id": 21221376,
      "case_id": 41857888,
      "номер": "2-1284/2024 ~ М-375/2024",
      "дата_документа": "2024-07-22",
      "суд": {
        "код": "59RS0003",
        "суд": "Кировский районный суд г. Перми (Пермский край)",
        "регион": "Пермский край",
        "сайт": "kirov.perm.sudrf.ru"
      },
      "ссылка_на_акт": "https://kirov--perm.sudrf.ru/modules.php?delo_id=1540005&name=sud_delo&name_op=doc&new=&number=383515098&srv_num=1&text_number=1"
    },
    {
      "act_id": 16201876,
      "case_id": 32121026,
      "номер": "2-1208/2024 ~ М-2945/2023",
      "дата_документа": "",
      "суд": {
        "код": "66RS0053",
        "суд": "Сысертский районный суд (Свердловская область)",
        "регион": "Свердловская область",
        "сайт": "sysertsky.svd.sudrf.ru"
      },
      "ссылка_на_акт": "https://sysertsky--svd.sudrf.ru/modules.php?delo_id=1540005&name=sud_delo&name_op=doc&new=&number=513750932&srv_num=1&text_number=1"
    },
    {
      "act_id": 32036828,
      "case_id": 50692832,
      "номер": "2-1083/2024 (2-5747/2023;) ~ М-5033/2023",
      "дата_документа": "2024-02-29",
      "суд": {
        "код": "59RS0004",
        "суд": "Ленинский районный суд г. Перми (Пермский край)",
        "регион": "Пермский край",
        "сайт": "lenin.perm.sudrf.ru"
      },
      "ссылка_на_акт": "https://lenin--perm.sudrf.ru/modules.php?delo_id=1540005&name=sud_delo&name_op=doc&new=&number=365347217&srv_num=1&text_number=1"
    }
  ],
  "next_cursor": 5
}

Step 6 · raysud_acts

Take act_ids from search. Read the five operative parts and sum awards to a single claimant: damages, the statutory penalty, compensation for non-pecuniary damage, the consumer-law penalty and awarded costs. Exclude ticket payments owed by the claimants and court fees payable to the state.

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "raysud_acts",
    "arguments": {
      "part": "resolution",
      "limit": 5,
      "budget": 60000,
      "act_ids": "37900030,19299446,21221376,16201876,32036828"
    }
  }
}

The cat’s reply — selected fields:

{
  "показано": 5,
  "акты": [
    {
      "act_id": 37900030,
      "номер_дела": "2-2268/2024 ~ М-1224/2024",
      "текст": "…Взыскать с публичного акционерного общества «Аэрофлот -Российские авиалинии» (ОГРН № ) в пользу К******а Д****а В*********а ( ДД.ММ.ГГГГ года рождения, СНИЛС № ) компенсацию морального вреда в размере 10 000 руб., штраф в размере 5 000 руб.\n Взыскать с публичного акционерного общества «Аэрофлот - Российские авиалинии» (ОГРН № ) в пользу С*******й М***и С*******ы ( ДД.ММ.ГГГГ года рождения, СНИЛС № ) компенсацию морального вреда в размере 10 000 руб., штраф в размере 5 000 руб.\n Взыскать с публичного акционерного общества «Аэрофлот - Российские авиалинии» (ОГРН № ) государственную пошлину в размере 600 руб.\n Возложить обязанность на К******а Д****а В*********а, С******у М***ю С*******у оплатить договоры воздушной перевозки пассажиров общей стоимостью 39 574 руб.\n В удовлетворении остальной части исковых требований отказать.\n Решение может быть обжаловано в апелляционном порядке в Пермский краевой суд в месячный срок со дня составления мо…"
    },
    {
      "act_id": 19299446,
      "номер_дела": "2-1455/2024 ~ М-923/2024",
      "текст": "…Взыскать с Публичного акционерного общества «Аэрофлот» (ИНН 7712040126) в пользу З******й И. Д. (паспорт РФ [паспортные данные скрыты]) убытки в сумме 32 968,00 руб., неустойку за просрочку возмещения убытков в сумме 32 968,00 руб., компенсацию морального вреда в сумме 5 000,00 руб., штраф в размере 36 468,00 руб., а всего 107 404,00 руб.\n Взыскать с Публичного акционерного общества «Аэрофлот» (ИНН 7712040126) в пользу З*****а В. Л. (паспорт РФ [паспортные данные скрыты]) убытки в сумме 32 968,00 руб., неустойку за просрочку возмещения убытков в сумме 32 968,00 руб., компенсацию морального вреда в сумме 5 000,00 руб., штраф в размере 36 468,00 руб., а всего 107 404,00 руб.\n В удовлетворении остальной части исковых требований о взыскании морального вреда – отказать. \n Взыскать с Публичного акционерного общества «Аэрофлот» (ИНН 7712040126) в доход местного бюджета государственную пошлину в размере 4 137,00 руб.\n Решение может быть обжалов…"
    },
    {
      "act_id": 21221376,
      "номер_дела": "2-1284/2024 ~ М-375/2024",
      "текст": "…Взыскать с Публичного акционерного общества «Аэрофлот – российские авиалинии» (ОГРН 1027700092661) в пользу Д***********й С.А. компенсацию морального вреда в размере 10 000 руб., штраф в сумме 5 000 руб.\n Взыскать с Публичного акционерного общества «Аэрофлот – Российские авиалинии» (ОГРН 1027700092661) в доход бюджета государственную пошлину в размере 600 руб.\n Возложить обязанность на Д**********у С.А. оплатить договор воздушной перевозки пассажиров общей стоимостью 29955 руб.\n В удовлетворении остальной части исковых требований Д***********й С.А. отказать.\n Решение в течение месяца со дня принятия в окончательной форме может быть обжаловано в апелляционном порядке в Пермский краевой суд через Кировский районный суд г.Перми.\n Судья Н.М. Швец \n Мотивированное решение составлено 01 августа 2024 года"
    },
    {
      "act_id": 16201876,
      "номер_дела": "2-1208/2024 ~ М-2945/2023",
      "текст": "…Взыскать с Публичного акционерного общества «Аэрофлот - российские авиалинии» (ПАО «Аэрофлот») (ИНН 7712040126, ОГРН 1027700092661) в пользу Б****а ФИО12 …сумму убытков в размере 115 879 руб., неустойку, предусмотренную ч.5 ст. 28 Закона РФ от 07.02.1992 № 2300-1 «О защите прав потребителей», в размере 76 480 руб. 14 коп., компенсацию морального вреда в размере 5 000 руб., штраф в размере 98 679 руб. 57 коп., а также судебные расходы по направлению почтовых отправлений в размере 425 руб. 10 коп., итого 296 463 (двести девяносто шесть тысяч четыреста шестьдесят три) рубля 81 копейка. \n В удовлетворении остальной части заявленных требований истцам отказать.\n Взыскать с Публичного акционерного общества «Аэрофлот - российские авиалинии» (ПАО «Аэрофлот») (ИНН 7712040126, ОГРН 1027700092661) в пользу местного бюджета госпошлину в размере 5 347 (пять тысяч триста сорок семь) рублей 18 копеек.\n Решение может быть обжаловано в Свердловский областной суд в течение месяца со дня принятия решения суда в окончательной форме путем подачи апелляционной жалобы через Сысертский районный суд, вынесший реше…"
    },
    {
      "act_id": 32036828,
      "номер_дела": "2-1083/2024 (2-5747/2023;) ~ М-5033/2023",
      "текст": "…Взыскать с публичного акционерного общества «Аэрофлот - российские авиалинии» в пользу ФИО3 , ФИО2 компенсацию морального вреда по 10 000 руб. в пользу каждого, штраф по 5000 руб. в пользу каждого.\n Взыскать с публичного акционерного общества «Аэрофлот - российские авиалинии» в доход местного бюджета государственную пошлину в размере 300 руб.\n Обязать ФИО3 , ФИО2 оплатить договоры воздушной перевозки стоимостью 18 625 руб. каждый.\n Решение суда может быть обжаловано в Пермский краевой суд через Ленинский районный суд г. Перми в течение месяца со дня принятия решения в окончательной форме.\n Копия верна\n Судья Ю.Н.Шпигарь\n Мотивированное решение изготовлено 07.03.2024"
    }
  ],
  "next_cursor": null
}

The agent replies to the human

Among the five judgments read, the largest award to a single claimant is RUB 296,463.81, in case No. 2-1208/2024 before the Sysertsky District Court: RUB 115,879 damages + RUB 76,480.14 statutory penalty + RUB 5,000 compensation for non-pecuniary damage + RUB 98,679.57 consumer-law penalty + RUB 425.10 postage costs. The RUB 5,347.18 court fee payable to the state is excluded. This compares five judgments. To establish the maximum across the matched cases, the agent continues from next_cursor and checks subsequent appeals.

Direct API calls for this chain

Session setup

curl --fail-with-body 'https://mcp.amazingcat.net/mcp' \
  -H 'Authorization: Bearer YOUR_AMAZINGCAT_TOKEN' \
  -H 'Mcp-Session-Id: YOUR_MCP_SESSION_ID' \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Content-Type: application/json' \
  --data-raw '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "law_find", "arguments": {"query": "Воздушный кодекс", "limit": 5}}}'
curl --fail-with-body 'https://mcp.amazingcat.net/mcp' \
  -H 'Authorization: Bearer YOUR_AMAZINGCAT_TOKEN' \
  -H 'Mcp-Session-Id: YOUR_MCP_SESSION_ID' \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Content-Type: application/json' \
  --data-raw '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "law_get_text", "arguments": {"articles": "103,105,107,108", "max_chars": 24000, "act": "Воздушный кодекс Российской Федерации"}}}'
curl --fail-with-body 'https://mcp.amazingcat.net/mcp' \
  -H 'Authorization: Bearer YOUR_AMAZINGCAT_TOKEN' \
  -H 'Mcp-Session-Id: YOUR_MCP_SESSION_ID' \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Content-Type: application/json' \
  --data-raw '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "law_get_text", "arguments": {"act": "ГК", "articles": "310,393,786", "max_chars": 13000}}}'
curl --fail-with-body 'https://mcp.amazingcat.net/mcp' \
  -H 'Authorization: Bearer YOUR_AMAZINGCAT_TOKEN' \
  -H 'Mcp-Session-Id: YOUR_MCP_SESSION_ID' \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Content-Type: application/json' \
  --data-raw '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "law_get_text", "arguments": {"act": "Закон о защите прав потребителей", "articles": "13,15", "max_chars": 13000}}}'
curl --fail-with-body 'https://mcp.amazingcat.net/mcp' \
  -H 'Authorization: Bearer YOUR_AMAZINGCAT_TOKEN' \
  -H 'Mcp-Session-Id: YOUR_MCP_SESSION_ID' \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Content-Type: application/json' \
  --data-raw '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "raysud_search", "arguments": {"query": "\"Аэрофлот\" \"Екатеринбург\" \"Пхукет\" \"бронирование\"", "limit": 5, "detail": "brief"}}}'
curl --fail-with-body 'https://mcp.amazingcat.net/mcp' \
  -H 'Authorization: Bearer YOUR_AMAZINGCAT_TOKEN' \
  -H 'Mcp-Session-Id: YOUR_MCP_SESSION_ID' \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Content-Type: application/json' \
  --data-raw '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "raysud_acts", "arguments": {"part": "resolution", "limit": 5, "budget": 60000, "act_ids": "37900030,19299446,21221376,16201876,32036828"}}}'

Supreme Court case law under a provision

Connect the cat

Connect the free amazingcat MCP server (“the cat”) to your agent using the instructions. Without this connection, the agent cannot call the cat.

The human asks the agent

Ask the cat to find Supreme Court case law under Article 112 of the Civil Procedure Code: when can late receipt of a court decision justify reinstating the time limit for a cassation appeal? Explain one relevant ruling.

The agent prepares the search

The agent identifies the procedural time limit, the cassation appeal and Article 112 of the Civil Procedure Code. It requests five search results with search_practice, then reads one using get_case. The doc_id comes from search; the conclusion concerns the facts of the selected ruling.

Step 1 · search_practice

Request five search results and select one relevant ruling for the requested detailed example. ВС is the supported Supreme Court corpus code.

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "search_practice",
    "arguments": {
      "query": "восстановление срока кассационной жалобы позднее получение копии судебного акта",
      "article": "112 ГПК",
      "court": "ВС",
      "limit": 5,
      "detail": "compact"
    }
  }
}

The cat’s reply — selected fields:

{
  "query": "восстановление срока кассационной жалобы позднее получение копии судебного акта",
  "article": "112 ГПК",
  "court_filter": "ВС",
  "results": [
    {
      "doc_id": 1993400,
      "court": "ВС",
      "date": "2021-04-06",
      "case_number": "56-КГ21-1-К9",
      "position": "ВС РФ, руководствуясь ст. 46 Конституции РФ, ст. 112, 329, 376.1 ГПК РФ, разъяснениями постановления Пленума ВС РФ №29 и Обзора судебной практики №4 (2019), указал, что позднее получение мотивированного судебного акта (апелляционное определение направлено сторонам только 20.05.2020) при добросовестности заявителя и разумности сроков последующих действий является уважительной причиной для восстановления срока. Отказ в восстановлении противоречит п…",
      "source_url": "https://www.vsrf.ru/lk/practice/stor_pdf/1993400"
    },
    {
      "doc_id": 2065454,
      "court": "ВС",
      "date": "2021-11-30",
      "case_number": "5-КГ21-138-К2",
      "position": "ВС, сославшись на ст.46 Конституции РФ, ст.112, 329, 376.1, 67, 71 ГПК РФ и разъяснения (п.15 постановления Пленума ВС №17, Обзор судебной практики ВС №4 (2019)), указал, что позднее получение мотивированного судебного акта при добросовестности заявителя и разумности сроков может быть уважительной причиной. По делу резолютивная часть апелляционного определения вынесена 28.09.2020, дело поступило в суд первой инстанции 09.12.2020, истица получила …",
      "source_url": "https://www.vsrf.ru/lk/practice/stor_pdf/2065454"
    }
  ]
}

3 additional entries are omitted from this abbreviated reply.

Step 2 · get_case

doc_id comes from results[0]: decision No. 56-КГ21-1-К9 dated 6 April 2021.

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "get_case",
    "arguments": {
      "court": "ВС",
      "doc_id": 1993400
    }
  }
}

The cat’s reply — selected fields:

{
  "doc_id": 1993400,
  "court": "ВС",
  "case_number": "56-КГ21-1-К9",
  "date": "2021-04-06",
  "position": "ВС РФ, руководствуясь ст. 46 Конституции РФ, ст. 112, 329, 376.1 ГПК РФ, разъяснениями постановления Пленума ВС РФ №29 и Обзора судебной практики №4 (2019), указал, что позднее получение мотивированного судебного акта (апелляционное определение направлено сторонам только 20.05.2020) при добросовестности заявителя и разумности сроков последующих действий является уважительной причиной для восстановления срока. Отказ в восстановлении противоречит праву на судебную защиту.",
  "result": "Определения Девятого КСОЮ от 30.07.2020 и от 08.09.2020 отменены. Восстановлен ООО СПК «ГлавМонтажОбъединение» пропущенный процессуальный срок подачи кассационной жалобы. Дело направлено в Девятый КСОЮ для выполнения действий по ст. 378 ГПК РФ.",
  "source_url": "https://www.vsrf.ru/lk/practice/stor_pdf/1993400"
}

The agent replies to the human

In ruling No. 56-КГ21-1-К9 of 6 April 2021, the Supreme Court reinstated the time limit: the appellate ruling was sent only on 20 May 2020. The Court considered late receipt, the applicant’s good faith and the time taken to act afterward. An agent would check these circumstances in the new case. Document: https://www.vsrf.ru/lk/practice/stor_pdf/1993400.

Direct API calls for this chain

Session setup

curl --fail-with-body 'https://mcp.amazingcat.net/mcp' \
  -H 'Authorization: Bearer YOUR_AMAZINGCAT_TOKEN' \
  -H 'Mcp-Session-Id: YOUR_MCP_SESSION_ID' \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Content-Type: application/json' \
  --data-raw '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "search_practice", "arguments": {"query": "восстановление срока кассационной жалобы позднее получение копии судебного акта", "article": "112 ГПК", "court": "ВС", "limit": 5, "detail": "compact"}}}'
curl --fail-with-body 'https://mcp.amazingcat.net/mcp' \
  -H 'Authorization: Bearer YOUR_AMAZINGCAT_TOKEN' \
  -H 'Mcp-Session-Id: YOUR_MCP_SESSION_ID' \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Content-Type: application/json' \
  --data-raw '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "get_case", "arguments": {"court": "ВС", "doc_id": 1993400}}}'

A provision as of a selected date

Connect the cat

Connect the free amazingcat MCP server (“the cat”) to your agent using the instructions. Without this connection, the agent cannot call the cat.

The human asks the agent

Ask the cat for Article 219 of the Code of Administrative Judicial Procedure of the Russian Federation as of 1 January 2025: what is the time limit for challenging a bailiff’s action or inaction?

The agent prepares the search

The agent identifies an administrative judicial claim under KAS, rather than an administrative offence under KoAP, Article 219 and date 2025-01-01. It resolves the code and uses law_get_text(as_of) for historical text, rather than get_norm_text for the current revision. It checks the article’s revision date.

Step 1 · law_find

Use the KAS title from candidates[0].name. Up to five candidates allow the agent to resolve the code.

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "law_find",
    "arguments": {
      "query": "Кодекс административного судопроизводства",
      "limit": 5
    }
  }
}

The cat’s reply — selected fields:

{
  "query": "Кодекс административного судопроизводства",
  "candidates": [
    {
      "docid": 170464,
      "name": "Кодекс административного судопроизводства Российской Федерации",
      "source_url": "https://mcp.amazingcat.net/russian_law/kas_rf"
    }
  ]
}

Step 2 · law_get_text

act is the law_find title. articles and as_of follow the question; the text budget accommodates one article.

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "law_get_text",
    "arguments": {
      "articles": "219",
      "as_of": "2025-01-01",
      "max_chars": 10000,
      "act": "Кодекс административного судопроизводства Российской Федерации"
    }
  }
}

The cat’s reply — selected fields:

{
  "as_of": "2025-01-01",
  "articles": [
    {
      "article": "219",
      "as_of": "2025-01-01",
      "redaction_date": "20240819",
      "valid_until": "20250108",
      "text": "…\n3. Административное исковое заявление о признании незаконными решений Федеральной службы судебных приставов, а также решений , действий (бездействия) судебного пристава-исполнителя может быть подано в суд в течение десяти дней со дня, когда гражданину, организации, иному лицу стало известно о нарушении их прав, свобод и законных интересов. (В редакции Федерального закона от 21.12.2021 № 417-ФЗ )\n4. Административное исковое заявление об оспаривании решений, действий (бездействия) исполнительного органа субъекта Российской Федерации, органа местного самоуправления по вопросам, связанным с согласованием места и времени проведения публичного мероприятия (собрания, митинга, демонстрации, шествия, пикетирования), а также с вынесенным этими органами предупреждением в отношении целей такого публичного мероприятия и формы его проведения, может быть подано в суд в течение десяти дней со дня, когда гражданину, организации, иному лицу стало известно о нарушении их прав, свобод и законных интересов. (В редакции Федерального закона от 08.08.2024 № 232-ФЗ )\n5. Пропуск установленного срока обращения в суд не является основанием для отказа в принят…"
    }
  ]
}

The agent replies to the human

Article 219(3) of the Code of Administrative Judicial Procedure gives ten days to challenge a bailiff’s decision, action or inaction, measured from learning of the violation of rights, freedoms and lawful interests. This is the text as of 1 January 2025. For a particular case, establish when the claimant learned of the violation and whether there are grounds to restore a missed deadline.

Direct API calls for this chain

Session setup

curl --fail-with-body 'https://mcp.amazingcat.net/mcp' \
  -H 'Authorization: Bearer YOUR_AMAZINGCAT_TOKEN' \
  -H 'Mcp-Session-Id: YOUR_MCP_SESSION_ID' \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Content-Type: application/json' \
  --data-raw '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "law_find", "arguments": {"query": "Кодекс административного судопроизводства", "limit": 5}}}'
curl --fail-with-body 'https://mcp.amazingcat.net/mcp' \
  -H 'Authorization: Bearer YOUR_AMAZINGCAT_TOKEN' \
  -H 'Mcp-Session-Id: YOUR_MCP_SESSION_ID' \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Content-Type: application/json' \
  --data-raw '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "law_get_text", "arguments": {"articles": "219", "as_of": "2025-01-01", "max_chars": 10000, "act": "Кодекс административного судопроизводства Российской Федерации"}}}'

Review wording in a court submission

Connect the cat

Connect the free amazingcat MCP server (“the cat”) to your agent using the instructions. Without this connection, the agent cannot call the cat.

The human asks the agent

Ask the cat to review this sentence for a civil submission: «Суд просто проигнорировал мои доводы, хотя они могли повлиять на результат дела». Give three Supreme Court wording examples and one revision preserving its meaning.

The agent prepares the search

The agent distinguishes language editing from case-law research. It checks length limits with wording_stats and sends the complete sentence to wording_review for civil proceedings and three examples. The passages help replace conversational wording; facts, provisions and conclusions from the source cases are not imported into the draft.

Step 1 · wording_stats

These limits govern wording-review input: sentence count and length.

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "wording_stats",
    "arguments": {}
  }
}

The cat’s reply — selected fields:

{
  "status": "ok",
  "limits": {
    "max_sentences": 40,
    "sentence_chars": [
      40,
      700
    ],
    "max_total_chars": 20000,
    "per_sentence": [
      1,
      8
    ],
    "max_fragments": 120
  }
}

Step 2 · wording_review

sentences contains the user’s text; proceeding=civil follows the submission type, and per_sentence=3 follows the requested number of examples. Frequencies describe usage, not legal correctness.

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "wording_review",
    "arguments": {
      "sentences": [
        "Суд просто проигнорировал мои доводы, хотя они могли повлиять на результат дела."
      ],
      "proceeding": "civil",
      "per_sentence": 3,
      "frequencies": true
    }
  }
}

The cat’s reply — selected fields:

{
  "status": "ok",
  "results": [
    {
      "n": 1,
      "sentence": "Суд просто проигнорировал мои доводы, хотя они могли повлиять на результат дела.",
      "examples": [
        {
          "fragment": "Между тем эти доводы заявителя, имеющие существенное значение для правильного разрешения спора, суд оставил без внимания.",
          "act": {
            "court": "Верховный Суд Российской Федерации",
            "act_number": "18-В10-43",
            "act_date": "2010-07-13",
            "source_url": "https://www.vsrf.ru/lk/practice/stor_pdf/320448"
          }
        },
        {
          "fragment": "Однако эти доводы сторон спора судом первой инстанции были проигнорированы.",
          "act": {
            "court": "Верховный Суд Российской Федерации",
            "act_number": "4-КГ24-74-К1",
            "act_date": "2025-01-20",
            "source_url": "https://www.vsrf.ru/lk/practice/stor_pdf/2440836"
          }
        },
        {
          "fragment": "Данные обстоятельства имели существенное значение для правильного разрешения спора, но были проигнорированы судами.",
          "act": {
            "court": "Верховный Суд Российской Федерации",
            "act_number": "18-КГ25-221-К4",
            "act_date": "2025-07-18",
            "source_url": "https://www.vsrf.ru/lk/practice/stor_pdf/2479318"
          }
        }
      ],
      "words": [
        {
          "text": "дела",
          "lemma": "деть",
          "acts": 1
        },
        {
          "text": "проигнорировал",
          "lemma": "проигнорировать",
          "acts": 145
        },
        {
          "text": "повлиять",
          "lemma": "повлиять",
          "acts": 6667
        },
        {
          "text": "результат",
          "lemma": "результат",
          "acts": 8792
        },
        {
          "text": "могли",
          "lemma": "мочь",
          "acts": 14947
        },
        {
          "text": "доводы",
          "lemma": "довод",
          "acts": 23589
        },
        {
          "text": "дела",
          "lemma": "дело",
          "acts": 26381
        }
      ]
    }
  ]
}

The agent replies to the human

Suggested revision: «Суд оставил без внимания доводы заявителя, которые могли иметь значение для разрешения спора». It preserves the court as the actor and the conditional “could”; it adds no unconditional duty to reverse the decision. The cat’s response above supplies three examples and their source links.

Direct API calls for this chain

Session setup

curl --fail-with-body 'https://mcp.amazingcat.net/mcp' \
  -H 'Authorization: Bearer YOUR_AMAZINGCAT_TOKEN' \
  -H 'Mcp-Session-Id: YOUR_MCP_SESSION_ID' \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Content-Type: application/json' \
  --data-raw '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "wording_stats", "arguments": {}}}'
curl --fail-with-body 'https://mcp.amazingcat.net/mcp' \
  -H 'Authorization: Bearer YOUR_AMAZINGCAT_TOKEN' \
  -H 'Mcp-Session-Id: YOUR_MCP_SESSION_ID' \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Content-Type: application/json' \
  --data-raw '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "wording_review", "arguments": {"sentences": ["Суд просто проигнорировал мои доводы, хотя они могли повлиять на результат дела."], "proceeding": "civil", "per_sentence": 3, "frequencies": true}}}'

Wording review

wording_review retrieves Supreme Court language examples and expression frequencies; the agent replaces awkward wording and proposes a revision. wording_stats reports accepted text sizes.

End-to-end wording example.

QR in PDF and DOCX footnotes

The cat returns a QR code that can be inserted into a footnote at the bottom of a PDF or DOCX page. A phone camera opens the document URL encoded in the QR.

Decision records for the Supreme Court of the Russian Federation, the Constitutional Court of the Russian Federation, Supreme Court Plenum resolutions, the historical Supreme Commercial Court corpus and reviews of judicial practice contain source_url and a qr object. They are returned by find_term, search_practice, find_by_norm and get_case.

FieldMeaning
source_urlDocument URL on the court website: a PDF or document page.
qr.qr_image_urlPNG URL; download the image without a Bearer token.
qr.qr_encodesURL encoded in the QR. It equals source_url in this example.
qr.qr_noteA brief explanation of the QR.

find_term and search_practice return decision records in results[i]; find_by_norm uses corpora[corpus]["документы"][i], where corpus is a corpus-group key; get_case returns the top-level decision record. Other families use their own schemas: read the PNG address specifically from qr.qr_image_url.

Connect the cat

Connect the free amazingcat MCP server (“the cat”) to your agent using the instructions. Without this connection, the agent cannot call the cat.

The human asks the agent

Ask the cat to find Supreme Court case law on litigation costs and provide a QR code for one relevant ruling for a PDF footnote.

The agent prepares the search

The agent requests five search results, selects one ruling and retrieves it using the returned doc_id. It takes the document URL and PNG URL from source_url and qr.

Step 1 · find_term

Request five search results to select a relevant ruling; the first suitable decision’s doc_id is in results[0].

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "find_term",
    "arguments": {
      "phrase": "судебные расходы",
      "court": "ВС",
      "limit": 5,
      "detail": "compact"
    }
  }
}

The cat’s reply — selected fields:

{
  "results": [
    {
      "doc_id": 2571526,
      "court": "ВС",
      "date": "2026-10-02",
      "case_number": "305-ЭС26-10137",
      "source_url": "https://www.vsrf.ru/lk/practice/stor_pdf_ec/2571526"
    },
    {
      "doc_id": 2571436,
      "court": "ВС",
      "date": "2026-10-01",
      "case_number": "308-ЭС26-9943",
      "source_url": "https://www.vsrf.ru/lk/practice/stor_pdf_ec/2571436"
    }
  ]
}

3 additional entries are omitted from this abbreviated reply.

Step 2 · get_case

doc_id comes from results[0] above. Download the image from qr.qr_image_url; it encodes qr.qr_encodes.

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "get_case",
    "arguments": {
      "court": "ВС",
      "doc_id": 2571526
    }
  }
}

The cat’s reply — selected fields:

{
  "doc_id": 2571526,
  "court": "ВС",
  "date": "2026-10-02",
  "case_number": "305-ЭС26-10137",
  "source_url": "https://www.vsrf.ru/lk/practice/stor_pdf_ec/2571526",
  "qr": {
    "qr_image_url": "https://mcp.amazingcat.net/qr/760e89b9b8fc9745.png",
    "qr_encodes": "https://www.vsrf.ru/lk/practice/stor_pdf_ec/2571526",
    "qr_note": "QR кодирует ссылку на оригинал акта на сайте суда; наведите камеру телефона."
  }
}

The agent replies to the human

The agent downloads the PNG from qr.qr_image_url and inserts it into a footnote with the caption “Source: ruling of the Supreme Court of the Russian Federation”, the date, case number and source_url. Scanning the QR code opens qr.qr_encodes.

Direct API calls for this chain

Session setup

curl --fail-with-body 'https://mcp.amazingcat.net/mcp' \
  -H 'Authorization: Bearer YOUR_AMAZINGCAT_TOKEN' \
  -H 'Mcp-Session-Id: YOUR_MCP_SESSION_ID' \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Content-Type: application/json' \
  --data-raw '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "find_term", "arguments": {"phrase": "судебные расходы", "court": "ВС", "limit": 5, "detail": "compact"}}}'
curl --fail-with-body 'https://mcp.amazingcat.net/mcp' \
  -H 'Authorization: Bearer YOUR_AMAZINGCAT_TOKEN' \
  -H 'Mcp-Session-Id: YOUR_MCP_SESSION_ID' \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Content-Type: application/json' \
  --data-raw '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "get_case", "arguments": {"court": "ВС", "doc_id": 2571526}}}'

Document on the court website · PNG QR

QR linking to the court document
Source: Определение Верховного Суда Российской Федерации от 02.10.2026 № 305-ЭС26-10137

Direct API call and PNG download

Send Bearer and the session identifier returned by initialize. JSON/SSE decoding is described in MCP.

curl --request POST 'https://mcp.amazingcat.net/mcp' \
  -H 'Authorization: Bearer YOUR_AMAZINGCAT_TOKEN' \
  -H 'Mcp-Session-Id: YOUR_MCP_SESSION_ID' \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Content-Type: application/json' \
  --data-raw '{"jsonrpc": "2.0", "id": 4, "method": "tools/call", "params": {"name": "get_case", "arguments": {"court": "ВС", "doc_id": 2571526}}}'
curl --fail --output qr.png 'https://mcp.amazingcat.net/qr/760e89b9b8fc9745.png'

After decoding the response, use card["source_url"] for the caption and link, and card["qr"]["qr_image_url"] for the image. Download the PNG and embed it in the document.

PDF footnote · HTML for WeasyPrint

Use 24 × 24 mm on the page, with 2 mm of white space around it. Keep the image square. This example’s source PNG is 148 × 148 pixels; pixel dimensions depend on the URL length.

<!doctype html><html lang="ru"><meta charset="utf-8">
<title>QR в сноске</title>
<style>
  @page { size: A4; margin: 22mm 25mm;
    @footnote { border-top: .25pt solid; padding-top: 3mm; } }
  body { font: 12pt/1.5 "DejaVu Sans", sans-serif; }
  .note { float: footnote; font-size: 8pt; line-height: 1.3; }
  .note::footnote-call { content: counter(footnote); vertical-align: super; font-size: 8pt; }
  .note::footnote-marker { content: counter(footnote) ". "; }
  .note img { width: 24mm; height: 24mm; padding: 2mm; background: white;
    vertical-align: top; margin-right: 3mm; }
  .source { display: inline-block; width: 115mm; vertical-align: top; overflow-wrap: anywhere; }
</style>
<h1>Ссылка на судебный акт</h1>
<p>Судебный акт указан в сноске<span class="note"><img src="qr.png" alt="QR на источник">
  <span class="source">Источник: Определение Верховного Суда Российской Федерации от 02.10.2026 № 305-ЭС26-10137. <a href="https://www.vsrf.ru/lk/practice/stor_pdf_ec/2571526">https://www.vsrf.ru/lk/practice/stor_pdf_ec/2571526</a></span></span>.</p>
<p>QR-код внизу страницы содержит прямую ссылку на документ на сайте суда.</p>
</html>

float: footnote places the numbered note at the bottom of its page. The local qr.png is embedded in the PDF; the caption link stays clickable.

DOCX footnote

In Word, choose References → Insert Footnote. Insert the downloaded PNG into the note, set width and height to 2.4 cm, keep white space around it, and add a “Source: …” caption linking to the document.

For automated generation, download qr_footnote.py, raw.py and qr_requirements.txt. The script creates HTML, PDF and DOCX with a native Word footnote and an embedded PNG.

python -m pip install -r qr_requirements.txt
python qr_footnote.py --doc-id 2571526 --court ВС \
  --caption "Определение Верховного Суда Российской Федерации от 02.10.2026 № 305-ЭС26-10137" \
  --output qr-note

Generated example: PDF · DOCX · HTML · JSON.

Search parameters

In kas_search, court=1…9 identifies a cassation court; court=0 searches without selecting a court. In oblsud_* and raysud_*, court is a directory code from *_courts. Supply both court and case number; numbers are not unique between courts.

kind=civil selects civil proceedings, admin a KAS administrative claim, and koap an administrative-offence case. Check each family’s inputSchema. A session argument accepted by some tools does not replace the Mcp-Session-Id header.

query expresses a topic; text and phrase specify text search, and norms specifies provisions. For kas_search and oblsud_search, take the next cursor from page.next_cursor. For raysud_search, use the top-level next_cursor. Repeat the same filters with that cursor. In law_get_text follow pagination.next_request when truncated.

Participant names in the cat’s replies are masked; preserve the returned mask. Judges’ names may remain visible. Take a document source from its reply; do not assume every family supplies QR.

Batch integration

Export civil rulings of the Seventh Cassation Court of General Jurisdiction mentioning Article 112 of the Civil Procedure Code of the Russian Federation, dated 2023–2025, to CSV.

batch.py · Python 3.10+ and requests. Run one process in a dedicated directory.

python -m pip install requests
export AMAZINGCAT_TOKEN='YOUR_AMAZINGCAT_TOKEN'
"""Python 3.10+: pip install requests; export AMAZINGCAT_TOKEN='your browser-issued token'."""
import csv, json, os, time
from datetime import datetime, timezone
from pathlib import Path
import requests
URL = "https://mcp.amazingcat.net/mcp"
# Seventh cassation court, civil acts mentioning Article 112 GPK, dated 2023–2025.
QUERY = {"court": 7, "kind": "civil", "norms": "ГПК 112", "year_from": 2023,
         "year_to": 2025, "limit": 10, "detail": "brief"}
state_path, csv_path = Path("kas-export.state.json"), Path("kas-export.csv")
state = json.loads(state_path.read_text()) if state_path.exists() else {"cursor": 0, "calls": 0}
if time.time() < state.get("retry_not_before", 0):
    raise SystemExit("Quota pause; resume in " + str(int(state["retry_not_before"] - time.time()) + 1) + " seconds")
http = requests.Session()
http.headers.update({"Authorization": "Bearer " + os.environ["AMAZINGCAT_TOKEN"],
                     "Accept": "application/json, text/event-stream"})
last = 0.0
def save():
    tmp = state_path.with_suffix(".tmp")
    tmp.write_text(json.dumps(state)); tmp.replace(state_path)
def rpc(method, params=None):
    global last
    body = {"jsonrpc": "2.0", "method": method, "params": params or {}}
    if method != "notifications/initialized": body["id"] = method
    for attempt in range(5):
        day = datetime.now(timezone.utc).date().isoformat()
        if state.get("day") != day: state.update(day=day, calls=0)
        # Count every attempt except initialize; include the initialized notification.
        if method != "initialize":
            if state["calls"] >= 300: raise SystemExit("300 requests reached; resume on the next UTC day")
            state["calls"] += 1; save()
        time.sleep(max(0, 1.05 - (time.monotonic() - last))); last = time.monotonic()
        with http.post(URL, json=body, stream=True, timeout=(15, 120)) as r:
            # The server can signal a quota delay with HTTP 429 or HTTP 200 + Retry-After.
            if r.status_code == 429 or r.headers.get("Retry-After"):
                delay = int(r.headers.get("Retry-After", "60"))
                state["retry_not_before"] = time.time() + delay; save()
                if delay > 60: raise SystemExit("Quota pause; checkpoint saved. Resume after Retry-After: " + str(delay))
                time.sleep(delay); continue
            if r.status_code == 404: raise SystemExit("Session lost; run the script again to initialize and resume")
            r.raise_for_status()
            if r.headers.get("Mcp-Session-Id"): http.headers["Mcp-Session-Id"] = r.headers["Mcp-Session-Id"]
            if r.status_code == 202: return None
            if "text/event-stream" in r.headers.get("Content-Type", ""):
                r.encoding = "utf-8"; data = []; reply = None
                for line in r.iter_lines(decode_unicode=True):
                    if line.startswith("data:"): data.append(line[5:].lstrip())
                    elif not line and data:
                        event = json.loads("\n".join(data)); data = []
                        if event.get("id") == body.get("id"): reply = event; break
                if reply is None: raise RuntimeError("SSE ended without a response")
            else: reply = r.json()
        if "error" in reply: raise RuntimeError(reply["error"])
        return reply["result"]
    raise SystemExit("Retry limit reached; checkpoint saved")
if state.get("done"): raise SystemExit("Export already completed: " + str(csv_path))
if state.get("cursor", 0) and not csv_path.exists(): raise SystemExit("CSV missing; restore it before resuming")
init = rpc("initialize", {"protocolVersion": "2025-06-18", "capabilities": {},
                         "clientInfo": {"name": "cat-csv", "version": "1"}})
http.headers["MCP-Protocol-Version"] = init["protocolVersion"]
rpc("notifications/initialized")
seen = {row["act_id"] for row in csv.DictReader(csv_path.open(encoding="utf-8"))} if csv_path.exists() else set()
with csv_path.open("a", newline="", encoding="utf-8") as f:
    writer = csv.DictWriter(f, fieldnames=["act_id", "суд", "дата", "номер_определения", "класс_исхода"])
    if f.tell() == 0: writer.writeheader()
    pages = 0
    while True:
        result = rpc("tools/call", {"name": "kas_search", "arguments": {**QUERY, "cursor": state["cursor"]}})
        if result.get("isError"): raise RuntimeError(result)
        data = json.loads(next(b["text"] for b in result["content"] if b["type"] == "text"))
        if data.get("error") or data.get("ошибка") or data.get("частично"): raise RuntimeError("Search failed; cursor unchanged")
        for row in data["результаты"]:
            if str(row["act_id"]) not in seen:
                writer.writerow({k: row.get(k, "") for k in writer.fieldnames}); seen.add(str(row["act_id"]))
        f.flush(); os.fsync(f.fileno())  # Save rows before advancing the checkpoint; deduplicate on resume.
        cursor = data["page"]["next_cursor"]
        if cursor is not None and cursor <= state["cursor"]: raise RuntimeError("Cursor did not advance; checkpoint unchanged")
        state.update(cursor=cursor or 0, done=cursor is None); save()
        pages += 1; print(f"rows={len(seen)} found={data['найдено']} next_cursor={cursor}")
        if state["done"] or pages == int(os.environ.get("AMAZINGCAT_MAX_PAGES", "0")): break

Small run: two pages of ten rulings. AMAZINGCAT_MAX_PAGES=2 stops the demonstration after two pages; without it, the loop continues until the result ends or quota requires a pause. A new run resumes from the saved cursor.

AMAZINGCAT_MAX_PAGES=2 python batch.py
rows=10 found=236 next_cursor=10
rows=20 found=236 next_cursor=20

A second run in the same directory:

AMAZINGCAT_MAX_PAGES=2 python batch.py
rows=30 found=236 next_cursor=30
rows=40 found=236 next_cursor=40
  • Quota counts requests, not CSV rows; the initialized notification also consumes quota.
  • For 429 or Retry-After retry the same page after the specified pause; a long pause stops the script for later resumption.
  • kas-export.state.json stores the cursor and the script’s UTC-day request count; kas-export.csv stores rows. Keep both files and the same filters when resuming.
  • The script paces calls by 1.05 seconds and stops after 300 counted attempts per UTC day. Other calls using the same token also consume the shared quota; the server’s response takes precedence.

Tool reference

97 tools. JSON · inputSchema.

search_practice

Search case law by legal issue, corpus and legal provision.

ParameterTypeRequiredDefault
querystringyes—
limitinteger—10
articlestring—""
courtstring—""
detailstring—"full"
inputSchema · JSON Schema
{
  "properties": {
    "query": {
      "title": "Query",
      "type": "string"
    },
    "limit": {
      "default": 10,
      "title": "Limit",
      "type": "integer"
    },
    "article": {
      "default": "",
      "title": "Article",
      "type": "string"
    },
    "court": {
      "default": "",
      "title": "Court",
      "type": "string"
    },
    "detail": {
      "default": "full",
      "title": "Detail",
      "type": "string"
    }
  },
  "required": [
    "query"
  ],
  "title": "search_practiceArguments",
  "type": "object"
}

find_by_norm

Find court decisions referring to a legal provision.

ParameterTypeRequiredDefault
articlestringyes—
limitinteger—30
courtstring—""
detailstring—"full"
inputSchema · JSON Schema
{
  "properties": {
    "article": {
      "title": "Article",
      "type": "string"
    },
    "limit": {
      "default": 30,
      "title": "Limit",
      "type": "integer"
    },
    "court": {
      "default": "",
      "title": "Court",
      "type": "string"
    },
    "detail": {
      "default": "full",
      "title": "Detail",
      "type": "string"
    }
  },
  "required": [
    "article"
  ],
  "title": "find_by_normArguments",
  "type": "object"
}

practice_under_norms

Case law referring to several legal provisions.

ParameterTypeRequiredDefault
normsstring—""
querystring—""
courtstring—""
limit_per_norminteger—5
inputSchema · JSON Schema
{
  "properties": {
    "norms": {
      "default": "",
      "title": "Norms",
      "type": "string"
    },
    "query": {
      "default": "",
      "title": "Query",
      "type": "string"
    },
    "court": {
      "default": "",
      "title": "Court",
      "type": "string"
    },
    "limit_per_norm": {
      "default": 5,
      "title": "Limit Per Norm",
      "type": "integer"
    }
  },
  "title": "practice_under_normsArguments",
  "type": "object"
}

find_term

Find a phrase or number in higher-court decisions.

ParameterTypeRequiredDefault
phrasestringyes—
limitinteger—20
courtstring—""
detailstring—"full"
inputSchema · JSON Schema
{
  "properties": {
    "phrase": {
      "title": "Phrase",
      "type": "string"
    },
    "limit": {
      "default": 20,
      "title": "Limit",
      "type": "integer"
    },
    "court": {
      "default": "",
      "title": "Court",
      "type": "string"
    },
    "detail": {
      "default": "full",
      "title": "Detail",
      "type": "string"
    }
  },
  "required": [
    "phrase"
  ],
  "title": "find_termArguments",
  "type": "object"
}

list_tags

Supreme Court and Plenum topic tags.

ParameterTypeRequiredDefault
min_countinteger—2
courtstring—""
limitinteger—200
inputSchema · JSON Schema
{
  "properties": {
    "min_count": {
      "default": 2,
      "title": "Min Count",
      "type": "integer"
    },
    "court": {
      "default": "",
      "title": "Court",
      "type": "string"
    },
    "limit": {
      "default": 200,
      "title": "Limit",
      "type": "integer"
    }
  },
  "title": "list_tagsArguments",
  "type": "object"
}

search_by_tag

Search by a list_tags topic.

ParameterTypeRequiredDefault
tagstringyes—
limitinteger—20
courtstring—""
exactboolean—false
inputSchema · JSON Schema
{
  "properties": {
    "tag": {
      "title": "Tag",
      "type": "string"
    },
    "limit": {
      "default": 20,
      "title": "Limit",
      "type": "integer"
    },
    "court": {
      "default": "",
      "title": "Court",
      "type": "string"
    },
    "exact": {
      "default": false,
      "title": "Exact",
      "type": "boolean"
    }
  },
  "required": [
    "tag"
  ],
  "title": "search_by_tagArguments",
  "type": "object"
}

browse_practice

Filtered decision records with offset pagination.

ParameterTypeRequiredDefault
querystring—""
limitinteger—30
offsetinteger—0
courtstring—""
articlestring—""
tagstring—""
year_frominteger—null
year_tointeger—null
inputSchema · JSON Schema
{
  "properties": {
    "query": {
      "default": "",
      "title": "Query",
      "type": "string"
    },
    "limit": {
      "default": 30,
      "title": "Limit",
      "type": "integer"
    },
    "offset": {
      "default": 0,
      "title": "Offset",
      "type": "integer"
    },
    "court": {
      "default": "",
      "title": "Court",
      "type": "string"
    },
    "article": {
      "default": "",
      "title": "Article",
      "type": "string"
    },
    "tag": {
      "default": "",
      "title": "Tag",
      "type": "string"
    },
    "year_from": {
      "default": null,
      "title": "Year From",
      "type": "integer"
    },
    "year_to": {
      "default": null,
      "title": "Year To",
      "type": "integer"
    }
  },
  "title": "browse_practiceArguments",
  "type": "object"
}

find_similar

Similar court decisions using a case_id returned by search.

ParameterTypeRequiredDefault
case_idintegeryes—
limitinteger—10
inputSchema · JSON Schema
{
  "properties": {
    "case_id": {
      "title": "Case Id",
      "type": "integer"
    },
    "limit": {
      "default": 10,
      "title": "Limit",
      "type": "integer"
    }
  },
  "required": [
    "case_id"
  ],
  "title": "find_similarArguments",
  "type": "object"
}

get_case

Decision record and text by doc_id; source link and QR.

ParameterTypeRequiredDefault
doc_idintegeryes—
courtstring—"ВС"
inputSchema · JSON Schema
{
  "properties": {
    "doc_id": {
      "title": "Doc Id",
      "type": "integer"
    },
    "court": {
      "default": "ВС",
      "title": "Court",
      "type": "string"
    }
  },
  "required": [
    "doc_id"
  ],
  "title": "get_caseArguments",
  "type": "object"
}

get_case_details

Decision record and text by doc_id.

ParameterTypeRequiredDefault
doc_idintegeryes—
courtstring—"ВС"
inputSchema · JSON Schema
{
  "properties": {
    "doc_id": {
      "title": "Doc Id",
      "type": "integer"
    },
    "court": {
      "default": "ВС",
      "title": "Court",
      "type": "string"
    }
  },
  "required": [
    "doc_id"
  ],
  "title": "get_case_detailsArguments",
  "type": "object"
}

locate_pinpoint

Locate a quote on a document page.

ParameterTypeRequiredDefault
courtstringyes—
doc_idintegeryes—
quotestringyes—
inputSchema · JSON Schema
{
  "properties": {
    "court": {
      "title": "Court",
      "type": "string"
    },
    "doc_id": {
      "title": "Doc Id",
      "type": "integer"
    },
    "quote": {
      "title": "Quote",
      "type": "string"
    }
  },
  "required": [
    "court",
    "doc_id",
    "quote"
  ],
  "title": "locate_pinpointArguments",
  "type": "object"
}

stats

Court decision and indexed-text counts by corpus.

ParameterTypeRequiredDefault
inputSchema · JSON Schema
{
  "properties": {},
  "title": "statsArguments",
  "type": "object"
}

law_find

Find a law or code by name and retrieve its table of contents.

ParameterTypeRequiredDefault
querystringyes—
limitinteger—8
inputSchema · JSON Schema
{
  "properties": {
    "query": {
      "title": "Query",
      "type": "string"
    },
    "limit": {
      "default": 8,
      "title": "Limit",
      "type": "integer"
    }
  },
  "required": [
    "query"
  ],
  "title": "law_findArguments",
  "type": "object"
}

law_get_text

Law articles and sections; as_of selects the version as of a specified date.

ParameterTypeRequiredDefault
actstringyes—
articlesstring—""
sectionstring—""
as_ofstring—""
max_charsinteger—60000
offsetinteger—0
inputSchema · JSON Schema
{
  "properties": {
    "act": {
      "title": "Act",
      "type": "string"
    },
    "articles": {
      "default": "",
      "title": "Articles",
      "type": "string"
    },
    "section": {
      "default": "",
      "title": "Section",
      "type": "string"
    },
    "as_of": {
      "default": "",
      "title": "As Of",
      "type": "string"
    },
    "max_chars": {
      "default": 60000,
      "title": "Max Chars",
      "type": "integer"
    },
    "offset": {
      "default": 0,
      "title": "Offset",
      "type": "integer"
    }
  },
  "required": [
    "act"
  ],
  "title": "law_get_textArguments",
  "type": "object"
}

get_norm_text

Current legal provision and related case law.

ParameterTypeRequiredDefault
normsstringyes—
with_practiceboolean—true
limit_practiceinteger—4
inputSchema · JSON Schema
{
  "properties": {
    "norms": {
      "title": "Norms",
      "type": "string"
    },
    "with_practice": {
      "default": true,
      "title": "With Practice",
      "type": "boolean"
    },
    "limit_practice": {
      "default": 4,
      "title": "Limit Practice",
      "type": "integer"
    }
  },
  "required": [
    "norms"
  ],
  "title": "get_norm_textArguments",
  "type": "object"
}

law_history

Version dates for a law.

ParameterTypeRequiredDefault
actstringyes—
inputSchema · JSON Schema
{
  "properties": {
    "act": {
      "title": "Act",
      "type": "string"
    }
  },
  "required": [
    "act"
  ],
  "title": "law_historyArguments",
  "type": "object"
}

law_stats

Counts of laws, versions and articles.

ParameterTypeRequiredDefault
inputSchema · JSON Schema
{
  "properties": {},
  "title": "law_statsArguments",
  "type": "object"
}

npa_org_find

Find an issuing authority and its search code for normative legal acts.

ParameterTypeRequiredDefault
querystringyes—
limitinteger—10
inputSchema · JSON Schema
{
  "properties": {
    "query": {
      "title": "Query",
      "type": "string"
    },
    "limit": {
      "default": 10,
      "title": "Limit",
      "type": "integer"
    }
  },
  "required": [
    "query"
  ],
  "title": "npa_org_findArguments",
  "type": "object"
}

npa_kind_find

Find a document type and its code.

ParameterTypeRequiredDefault
querystringyes—
limitinteger—10
inputSchema · JSON Schema
{
  "properties": {
    "query": {
      "title": "Query",
      "type": "string"
    },
    "limit": {
      "default": 10,
      "title": "Limit",
      "type": "integer"
    }
  },
  "required": [
    "query"
  ],
  "title": "npa_kind_findArguments",
  "type": "object"
}

npa_catalog_stats

Normative legal act catalogue document counts.

ParameterTypeRequiredDefault
inputSchema · JSON Schema
{
  "properties": {},
  "title": "npa_catalog_statsArguments",
  "type": "object"
}

npa_originals_text

Text of a normative legal act by original_id from search.

ParameterTypeRequiredDefault
original_idstringyes—
max_charsinteger—40000
inputSchema · JSON Schema
{
  "properties": {
    "original_id": {
      "title": "Original Id",
      "type": "string"
    },
    "max_chars": {
      "default": 40000,
      "title": "Max Chars",
      "type": "integer"
    }
  },
  "required": [
    "original_id"
  ],
  "title": "npa_originals_textArguments",
  "type": "object"
}

npa_originals_stats

Downloaded normative legal act counts.

ParameterTypeRequiredDefault
inputSchema · JSON Schema
{
  "properties": {},
  "title": "npa_originals_statsArguments",
  "type": "object"
}

npa_find

Find normative legal acts in the Legislation of Russia bank.

ParameterTypeRequiredDefault
querystringyes—
limitinteger—15
inputSchema · JSON Schema
{
  "properties": {
    "query": {
      "title": "Query",
      "type": "string"
    },
    "limit": {
      "default": 15,
      "title": "Limit",
      "type": "integer"
    }
  },
  "required": [
    "query"
  ],
  "title": "npa_findArguments",
  "type": "object"
}

npa_text

Text of a normative legal act by nd, optionally as of a date.

ParameterTypeRequiredDefault
ndstringyes—
as_ofstring—""
inputSchema · JSON Schema
{
  "properties": {
    "nd": {
      "title": "Nd",
      "type": "string"
    },
    "as_of": {
      "default": "",
      "title": "As Of",
      "type": "string"
    }
  },
  "required": [
    "nd"
  ],
  "title": "npa_textArguments",
  "type": "object"
}

wording_review

Supreme Court wording examples and word frequencies for editing a draft.

ParameterTypeRequiredDefault
sentencesarrayyes—
per_sentenceinteger—3
articlestring—""
proceedingstring—"any"
zonestring—""
exclude_rolesstring—""
frequenciesboolean—true
inputSchema · JSON Schema
{
  "properties": {
    "sentences": {
      "items": {
        "type": "string"
      },
      "title": "Sentences",
      "type": "array"
    },
    "per_sentence": {
      "default": 3,
      "title": "Per Sentence",
      "type": "integer"
    },
    "article": {
      "default": "",
      "title": "Article",
      "type": "string"
    },
    "proceeding": {
      "default": "any",
      "title": "Proceeding",
      "type": "string"
    },
    "zone": {
      "default": "",
      "title": "Zone",
      "type": "string"
    },
    "exclude_roles": {
      "default": "",
      "title": "Exclude Roles",
      "type": "string"
    },
    "frequencies": {
      "default": true,
      "title": "Frequencies",
      "type": "boolean"
    }
  },
  "required": [
    "sentences"
  ],
  "title": "wording_reviewArguments",
  "type": "object"
}

wording_stats

Wording index counts and accepted input sizes.

ParameterTypeRequiredDefault
inputSchema · JSON Schema
{
  "properties": {},
  "title": "wording_statsArguments",
  "type": "object"
}

kas_stats

Court decision counts and supported filter values.

ParameterTypeRequiredDefault
sessionstring—""
inputSchema · JSON Schema
{
  "properties": {
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    }
  },
  "title": "kas_statsArguments",
  "type": "object"
}

kas_categories

Case category names for the category filter.

ParameterTypeRequiredDefault
containsstring—""
rootstring—""
limitinteger—40
sessionstring—""
inputSchema · JSON Schema
{
  "properties": {
    "contains": {
      "default": "",
      "title": "Contains",
      "type": "string"
    },
    "root": {
      "default": "",
      "title": "Root",
      "type": "string"
    },
    "limit": {
      "default": 40,
      "title": "Limit",
      "type": "integer"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    }
  },
  "title": "kas_categoriesArguments",
  "type": "object"
}

kas_judges

Find a judge and judge_id for filtering.

ParameterTypeRequiredDefault
surnamestring—""
courtinteger—0
limitinteger—20
sessionstring—""
inputSchema · JSON Schema
{
  "properties": {
    "surname": {
      "default": "",
      "title": "Surname",
      "type": "string"
    },
    "court": {
      "default": 0,
      "title": "Court",
      "type": "integer"
    },
    "limit": {
      "default": 20,
      "title": "Limit",
      "type": "integer"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    }
  },
  "title": "kas_judgesArguments",
  "type": "object"
}

kas_parties

Find a party and an organization’s INN for filtering.

ParameterTypeRequiredDefault
namestring—""
innstring—""
only_orgboolean—false
limitinteger—20
sessionstring—""
inputSchema · JSON Schema
{
  "properties": {
    "name": {
      "default": "",
      "title": "Name",
      "type": "string"
    },
    "inn": {
      "default": "",
      "title": "Inn",
      "type": "string"
    },
    "only_org": {
      "default": false,
      "title": "Only Org",
      "type": "boolean"
    },
    "limit": {
      "default": 20,
      "title": "Limit",
      "type": "integer"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    }
  },
  "title": "kas_partiesArguments",
  "type": "object"
}

kas_probe

Compare match counts for several search formulations.

ParameterTypeRequiredDefault
variantsstringyes—
topinteger—20
detailstring—"brief"
courtinteger—0
categorystring—""
outcomestring—""
appellant_rolestring—""
judge_idinteger—0
partystring—""
normsstring—""
year_frominteger—0
year_tointeger—0
kindstring—""
sessionstring—""
inputSchema · JSON Schema
{
  "properties": {
    "variants": {
      "title": "Variants",
      "type": "string"
    },
    "top": {
      "default": 20,
      "title": "Top",
      "type": "integer"
    },
    "detail": {
      "default": "brief",
      "title": "Detail",
      "type": "string"
    },
    "court": {
      "default": 0,
      "title": "Court",
      "type": "integer"
    },
    "category": {
      "default": "",
      "title": "Category",
      "type": "string"
    },
    "outcome": {
      "default": "",
      "title": "Outcome",
      "type": "string"
    },
    "appellant_role": {
      "default": "",
      "title": "Appellant Role",
      "type": "string"
    },
    "judge_id": {
      "default": 0,
      "title": "Judge Id",
      "type": "integer"
    },
    "party": {
      "default": "",
      "title": "Party",
      "type": "string"
    },
    "norms": {
      "default": "",
      "title": "Norms",
      "type": "string"
    },
    "year_from": {
      "default": 0,
      "title": "Year From",
      "type": "integer"
    },
    "year_to": {
      "default": 0,
      "title": "Year To",
      "type": "integer"
    },
    "kind": {
      "default": "",
      "title": "Kind",
      "type": "string"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    }
  },
  "required": [
    "variants"
  ],
  "title": "kas_probeArguments",
  "type": "object"
}

kas_by_norm

Court decisions by legal provision and the section mentioning it.

ParameterTypeRequiredDefault
codestringyes—
articlestringyes—
partstring—""
zonestring—"motivation"
include_frameboolean—true
with_normstring—""
courtinteger—0
outcomestring—""
judge_idinteger—0
limitinteger—10
kindstring—""
sessionstring—""
inputSchema · JSON Schema
{
  "properties": {
    "code": {
      "title": "Code",
      "type": "string"
    },
    "article": {
      "title": "Article",
      "type": "string"
    },
    "part": {
      "default": "",
      "title": "Part",
      "type": "string"
    },
    "zone": {
      "default": "motivation",
      "title": "Zone",
      "type": "string"
    },
    "include_frame": {
      "default": true,
      "title": "Include Frame",
      "type": "boolean"
    },
    "with_norm": {
      "default": "",
      "title": "With Norm",
      "type": "string"
    },
    "court": {
      "default": 0,
      "title": "Court",
      "type": "integer"
    },
    "outcome": {
      "default": "",
      "title": "Outcome",
      "type": "string"
    },
    "judge_id": {
      "default": 0,
      "title": "Judge Id",
      "type": "integer"
    },
    "limit": {
      "default": 10,
      "title": "Limit",
      "type": "integer"
    },
    "kind": {
      "default": "",
      "title": "Kind",
      "type": "string"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    }
  },
  "required": [
    "code",
    "article"
  ],
  "title": "kas_by_normArguments",
  "type": "object"
}

kas_aggregate

Distribution by the by parameter using supported schema filters.

ParameterTypeRequiredDefault
bystring—"outcome"
judge_idinteger—0
courtinteger—0
categorystring—""
outcomestring—""
appellant_rolestring—""
groundsstring—""
year_frominteger—0
year_tointeger—0
limitinteger—25
kindstring—""
sessionstring—""
inputSchema · JSON Schema
{
  "properties": {
    "by": {
      "default": "outcome",
      "title": "By",
      "type": "string"
    },
    "judge_id": {
      "default": 0,
      "title": "Judge Id",
      "type": "integer"
    },
    "court": {
      "default": 0,
      "title": "Court",
      "type": "integer"
    },
    "category": {
      "default": "",
      "title": "Category",
      "type": "string"
    },
    "outcome": {
      "default": "",
      "title": "Outcome",
      "type": "string"
    },
    "appellant_role": {
      "default": "",
      "title": "Appellant Role",
      "type": "string"
    },
    "grounds": {
      "default": "",
      "title": "Grounds",
      "type": "string"
    },
    "year_from": {
      "default": 0,
      "title": "Year From",
      "type": "integer"
    },
    "year_to": {
      "default": 0,
      "title": "Year To",
      "type": "integer"
    },
    "limit": {
      "default": 25,
      "title": "Limit",
      "type": "integer"
    },
    "kind": {
      "default": "",
      "title": "Kind",
      "type": "string"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    }
  },
  "title": "kas_aggregateArguments",
  "type": "object"
}

kas_acts

Sections of several court decisions from an act_ids list.

ParameterTypeRequiredDefault
act_idsstringyes—
partstring—"facts"
limitinteger—0
cursorinteger—0
budgetinteger—0
sessionstring—""
inputSchema · JSON Schema
{
  "properties": {
    "act_ids": {
      "title": "Act Ids",
      "type": "string"
    },
    "part": {
      "default": "facts",
      "title": "Part",
      "type": "string"
    },
    "limit": {
      "default": 0,
      "title": "Limit",
      "type": "integer"
    },
    "cursor": {
      "default": 0,
      "title": "Cursor",
      "type": "integer"
    },
    "budget": {
      "default": 0,
      "title": "Budget",
      "type": "integer"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    }
  },
  "required": [
    "act_ids"
  ],
  "title": "kas_actsArguments",
  "type": "object"
}

kas_case

Case record by case number and court, or by a court decision identifier.

ParameterTypeRequiredDefault
numberstring—""
courtinteger—0
uidstring—""
act_idinteger—0
act_idsstring—""
limitinteger—0
cursorinteger—0
sessionstring—""
inputSchema · JSON Schema
{
  "properties": {
    "number": {
      "default": "",
      "title": "Number",
      "type": "string"
    },
    "court": {
      "default": 0,
      "title": "Court",
      "type": "integer"
    },
    "uid": {
      "default": "",
      "title": "Uid",
      "type": "string"
    },
    "act_id": {
      "default": 0,
      "title": "Act Id",
      "type": "integer"
    },
    "act_ids": {
      "default": "",
      "title": "Act Ids",
      "type": "string"
    },
    "limit": {
      "default": 0,
      "title": "Limit",
      "type": "integer"
    },
    "cursor": {
      "default": 0,
      "title": "Cursor",
      "type": "integer"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    }
  },
  "title": "kas_caseArguments",
  "type": "object"
}

kas_act

One court decision’s text, a selected section or text window.

ParameterTypeRequiredDefault
act_idintegeryes—
partstring—""
aroundstring—""
offsetinteger—0
lengthinteger—0
sessionstring—""
inputSchema · JSON Schema
{
  "properties": {
    "act_id": {
      "title": "Act Id",
      "type": "integer"
    },
    "part": {
      "default": "",
      "title": "Part",
      "type": "string"
    },
    "around": {
      "default": "",
      "title": "Around",
      "type": "string"
    },
    "offset": {
      "default": 0,
      "title": "Offset",
      "type": "integer"
    },
    "length": {
      "default": 0,
      "title": "Length",
      "type": "integer"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    }
  },
  "required": [
    "act_id"
  ],
  "title": "kas_actArguments",
  "type": "object"
}

kas_verify_quote

Check whether a quotation appears verbatim in a selected court decision.

ParameterTypeRequiredDefault
act_idintegeryes—
quotestringyes—
sessionstring—""
inputSchema · JSON Schema
{
  "properties": {
    "act_id": {
      "title": "Act Id",
      "type": "integer"
    },
    "quote": {
      "title": "Quote",
      "type": "string"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    }
  },
  "required": [
    "act_id",
    "quote"
  ],
  "title": "kas_verify_quoteArguments",
  "type": "object"
}

arb_act

One court decision’s text, a selected section or text window.

ParameterTypeRequiredDefault
doc_idstringyes—
offsetinteger—0
lengthinteger—9000
max_charsinteger—12000
inputSchema · JSON Schema
{
  "properties": {
    "doc_id": {
      "title": "Doc Id",
      "type": "string"
    },
    "offset": {
      "default": 0,
      "title": "Offset",
      "type": "integer"
    },
    "length": {
      "default": 9000,
      "title": "Length",
      "type": "integer"
    },
    "max_chars": {
      "default": 12000,
      "title": "Max Chars",
      "type": "integer"
    }
  },
  "required": [
    "doc_id"
  ],
  "title": "arb_actArguments",
  "type": "object"
}

arb_case

Case record by case number and court, or by a court decision identifier.

ParameterTypeRequiredDefault
case_idstring—""
numberstring—""
limitinteger—10
cursorinteger—0
max_charsinteger—12000
inputSchema · JSON Schema
{
  "properties": {
    "case_id": {
      "default": "",
      "title": "Case Id",
      "type": "string"
    },
    "number": {
      "default": "",
      "title": "Number",
      "type": "string"
    },
    "limit": {
      "default": 10,
      "title": "Limit",
      "type": "integer"
    },
    "cursor": {
      "default": 0,
      "title": "Cursor",
      "type": "integer"
    },
    "max_chars": {
      "default": 12000,
      "title": "Max Chars",
      "type": "integer"
    }
  },
  "title": "arb_caseArguments",
  "type": "object"
}

arb_stats

Court decision counts and supported filter values.

ParameterTypeRequiredDefault
inputSchema · JSON Schema
{
  "properties": {},
  "title": "arb_statsArguments",
  "type": "object"
}

arb_verify_quote

Check whether a quotation appears verbatim in a selected court decision.

ParameterTypeRequiredDefault
doc_idstringyes—
quotestringyes—
max_charsinteger—12000
inputSchema · JSON Schema
{
  "properties": {
    "doc_id": {
      "title": "Doc Id",
      "type": "string"
    },
    "quote": {
      "title": "Quote",
      "type": "string"
    },
    "max_chars": {
      "default": 12000,
      "title": "Max Chars",
      "type": "integer"
    }
  },
  "required": [
    "doc_id",
    "quote"
  ],
  "title": "arb_verify_quoteArguments",
  "type": "object"
}

arb_pdf

Permanent link to the PDF of an arbitrazh court decision and its SHA256.

ParameterTypeRequiredDefault
doc_idstringyes—
inputSchema · JSON Schema
{
  "properties": {
    "doc_id": {
      "title": "Doc Id",
      "type": "string"
    }
  },
  "required": [
    "doc_id"
  ],
  "title": "arb_pdfArguments",
  "type": "object"
}

arb_by_norm

Court decisions by legal provision and the section mentioning it.

ParameterTypeRequiredDefault
codestringyes—
articlestringyes—
partstring—""
pointstring—""
querystring—""
courtstring—""
year_frominteger—0
year_tointeger—0
kindstring—""
ras_typestring—""
outcomestring—""
with_normstring—""
include_frameboolean—true
limitinteger—8
cursorinteger—0
max_charsinteger—12000
inputSchema · JSON Schema
{
  "properties": {
    "code": {
      "title": "Code",
      "type": "string"
    },
    "article": {
      "title": "Article",
      "type": "string"
    },
    "part": {
      "default": "",
      "title": "Part",
      "type": "string"
    },
    "point": {
      "default": "",
      "title": "Point",
      "type": "string"
    },
    "query": {
      "default": "",
      "title": "Query",
      "type": "string"
    },
    "court": {
      "default": "",
      "title": "Court",
      "type": "string"
    },
    "year_from": {
      "default": 0,
      "title": "Year From",
      "type": "integer"
    },
    "year_to": {
      "default": 0,
      "title": "Year To",
      "type": "integer"
    },
    "kind": {
      "default": "",
      "title": "Kind",
      "type": "string"
    },
    "ras_type": {
      "default": "",
      "title": "Ras Type",
      "type": "string"
    },
    "outcome": {
      "default": "",
      "title": "Outcome",
      "type": "string"
    },
    "with_norm": {
      "default": "",
      "title": "With Norm",
      "type": "string"
    },
    "include_frame": {
      "default": true,
      "title": "Include Frame",
      "type": "boolean"
    },
    "limit": {
      "default": 8,
      "title": "Limit",
      "type": "integer"
    },
    "cursor": {
      "default": 0,
      "title": "Cursor",
      "type": "integer"
    },
    "max_chars": {
      "default": 12000,
      "title": "Max Chars",
      "type": "integer"
    }
  },
  "required": [
    "code",
    "article"
  ],
  "title": "arb_by_normArguments",
  "type": "object"
}

arb_aggregate

Distribution by the by parameter using supported schema filters.

ParameterTypeRequiredDefault
bystring—"year"
codestring—""
articlestring—""
partstring—""
pointstring—""
querystring—""
courtstring—""
year_frominteger—0
year_tointeger—0
kindstring—""
ras_typestring—""
outcomestring—""
objectstring—""
with_normstring—""
include_frameboolean—true
limitinteger—20
inputSchema · JSON Schema
{
  "properties": {
    "by": {
      "default": "year",
      "title": "By",
      "type": "string"
    },
    "code": {
      "default": "",
      "title": "Code",
      "type": "string"
    },
    "article": {
      "default": "",
      "title": "Article",
      "type": "string"
    },
    "part": {
      "default": "",
      "title": "Part",
      "type": "string"
    },
    "point": {
      "default": "",
      "title": "Point",
      "type": "string"
    },
    "query": {
      "default": "",
      "title": "Query",
      "type": "string"
    },
    "court": {
      "default": "",
      "title": "Court",
      "type": "string"
    },
    "year_from": {
      "default": 0,
      "title": "Year From",
      "type": "integer"
    },
    "year_to": {
      "default": 0,
      "title": "Year To",
      "type": "integer"
    },
    "kind": {
      "default": "",
      "title": "Kind",
      "type": "string"
    },
    "ras_type": {
      "default": "",
      "title": "Ras Type",
      "type": "string"
    },
    "outcome": {
      "default": "",
      "title": "Outcome",
      "type": "string"
    },
    "object": {
      "default": "",
      "title": "Object",
      "type": "string"
    },
    "with_norm": {
      "default": "",
      "title": "With Norm",
      "type": "string"
    },
    "include_frame": {
      "default": true,
      "title": "Include Frame",
      "type": "boolean"
    },
    "limit": {
      "default": 20,
      "title": "Limit",
      "type": "integer"
    }
  },
  "title": "arb_aggregateArguments",
  "type": "object"
}

arb_card

Intellectual Property Court decision record: outcome, parties, judges, subject matter and legal provisions.

ParameterTypeRequiredDefault
doc_idstring—""
case_idstring—""
numberstring—""
limitinteger—10
cursorinteger—0
lengthinteger—4000
max_charsinteger—12000
inputSchema · JSON Schema
{
  "properties": {
    "doc_id": {
      "default": "",
      "title": "Doc Id",
      "type": "string"
    },
    "case_id": {
      "default": "",
      "title": "Case Id",
      "type": "string"
    },
    "number": {
      "default": "",
      "title": "Number",
      "type": "string"
    },
    "limit": {
      "default": 10,
      "title": "Limit",
      "type": "integer"
    },
    "cursor": {
      "default": 0,
      "title": "Cursor",
      "type": "integer"
    },
    "length": {
      "default": 4000,
      "title": "Length",
      "type": "integer"
    },
    "max_chars": {
      "default": 12000,
      "title": "Max Chars",
      "type": "integer"
    }
  },
  "title": "arb_cardArguments",
  "type": "object"
}

oblsud_courts

Names and codes of regional and equivalent courts.

ParameterTypeRequiredDefault
containsstring—""
sessionstring—""
inputSchema · JSON Schema
{
  "properties": {
    "contains": {
      "default": "",
      "title": "Contains",
      "type": "string"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    }
  },
  "title": "oblsud_courtsArguments",
  "type": "object"
}

oblsud_case

Case record by case number and court, or by a court decision identifier.

ParameterTypeRequiredDefault
courtstring—""
numberstring—""
uidstring—""
sessionstring—""
act_idinteger—0
act_idsstring—""
limitinteger—0
cursorinteger—0
inputSchema · JSON Schema
{
  "properties": {
    "court": {
      "default": "",
      "title": "Court",
      "type": "string"
    },
    "number": {
      "default": "",
      "title": "Number",
      "type": "string"
    },
    "uid": {
      "default": "",
      "title": "Uid",
      "type": "string"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    },
    "act_id": {
      "default": 0,
      "title": "Act Id",
      "type": "integer"
    },
    "act_ids": {
      "default": "",
      "title": "Act Ids",
      "type": "string"
    },
    "limit": {
      "default": 0,
      "title": "Limit",
      "type": "integer"
    },
    "cursor": {
      "default": 0,
      "title": "Cursor",
      "type": "integer"
    }
  },
  "title": "oblsud_caseArguments",
  "type": "object"
}

oblsud_act

One court decision’s text, a selected section or text window.

ParameterTypeRequiredDefault
act_keystring—""
courtstring—""
numberstring—""
uidstring—""
datestring—""
partinteger | string—0
aroundstring—""
offsetinteger—0
lengthinteger—0
sessionstring—""
act_idinteger—0
inputSchema · JSON Schema
{
  "properties": {
    "act_key": {
      "default": "",
      "title": "Act Key",
      "type": "string"
    },
    "court": {
      "default": "",
      "title": "Court",
      "type": "string"
    },
    "number": {
      "default": "",
      "title": "Number",
      "type": "string"
    },
    "uid": {
      "default": "",
      "title": "Uid",
      "type": "string"
    },
    "date": {
      "default": "",
      "title": "Date",
      "type": "string"
    },
    "part": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "string"
        }
      ],
      "default": 0,
      "title": "Part"
    },
    "around": {
      "default": "",
      "title": "Around",
      "type": "string"
    },
    "offset": {
      "default": 0,
      "title": "Offset",
      "type": "integer"
    },
    "length": {
      "default": 0,
      "title": "Length",
      "type": "integer"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    },
    "act_id": {
      "default": 0,
      "title": "Act Id",
      "type": "integer"
    }
  },
  "title": "oblsud_actArguments",
  "type": "object"
}

oblsud_by_norm

Court decisions by legal provision and the section mentioning it.

ParameterTypeRequiredDefault
codestringyes—
articlestringyes—
partstring—""
querystring—""
courtstring—""
yearstring—""
kindstring—""
date_fromstring—""
date_tostring—""
judgestring—""
partystring—""
categorystring—""
first_courtstring—""
outcomestring—""
limitinteger—20
sessionstring—""
pointstring—""
zonestring—""
include_frameboolean—true
with_normstring—""
judge_idinteger—0
procstring—""
inputSchema · JSON Schema
{
  "properties": {
    "code": {
      "title": "Code",
      "type": "string"
    },
    "article": {
      "title": "Article",
      "type": "string"
    },
    "part": {
      "default": "",
      "title": "Part",
      "type": "string"
    },
    "query": {
      "default": "",
      "title": "Query",
      "type": "string"
    },
    "court": {
      "default": "",
      "title": "Court",
      "type": "string"
    },
    "year": {
      "default": "",
      "title": "Year",
      "type": "string"
    },
    "kind": {
      "default": "",
      "title": "Kind",
      "type": "string"
    },
    "date_from": {
      "default": "",
      "title": "Date From",
      "type": "string"
    },
    "date_to": {
      "default": "",
      "title": "Date To",
      "type": "string"
    },
    "judge": {
      "default": "",
      "title": "Judge",
      "type": "string"
    },
    "party": {
      "default": "",
      "title": "Party",
      "type": "string"
    },
    "category": {
      "default": "",
      "title": "Category",
      "type": "string"
    },
    "first_court": {
      "default": "",
      "title": "First Court",
      "type": "string"
    },
    "outcome": {
      "default": "",
      "title": "Outcome",
      "type": "string"
    },
    "limit": {
      "default": 20,
      "title": "Limit",
      "type": "integer"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    },
    "point": {
      "default": "",
      "title": "Point",
      "type": "string"
    },
    "zone": {
      "default": "",
      "title": "Zone",
      "type": "string"
    },
    "include_frame": {
      "default": true,
      "title": "Include Frame",
      "type": "boolean"
    },
    "with_norm": {
      "default": "",
      "title": "With Norm",
      "type": "string"
    },
    "judge_id": {
      "default": 0,
      "title": "Judge Id",
      "type": "integer"
    },
    "proc": {
      "default": "",
      "title": "Proc",
      "type": "string"
    }
  },
  "required": [
    "code",
    "article"
  ],
  "title": "oblsud_by_normArguments",
  "type": "object"
}

oblsud_probe

Compare match counts for several search formulations.

ParameterTypeRequiredDefault
queriesstring—""
courtstring—""
yearstring—""
kindstring—""
date_fromstring—""
date_tostring—""
judgestring—""
partystring—""
categorystring—""
first_courtstring—""
outcomestring—""
sessionstring—""
variantsstring—""
topinteger—20
detailstring—"brief"
appellant_rolestring—""
judge_idinteger—0
normsstring—""
year_frominteger—0
year_tointeger—0
procstring—""
inputSchema · JSON Schema
{
  "properties": {
    "queries": {
      "default": "",
      "title": "Queries",
      "type": "string"
    },
    "court": {
      "default": "",
      "title": "Court",
      "type": "string"
    },
    "year": {
      "default": "",
      "title": "Year",
      "type": "string"
    },
    "kind": {
      "default": "",
      "title": "Kind",
      "type": "string"
    },
    "date_from": {
      "default": "",
      "title": "Date From",
      "type": "string"
    },
    "date_to": {
      "default": "",
      "title": "Date To",
      "type": "string"
    },
    "judge": {
      "default": "",
      "title": "Judge",
      "type": "string"
    },
    "party": {
      "default": "",
      "title": "Party",
      "type": "string"
    },
    "category": {
      "default": "",
      "title": "Category",
      "type": "string"
    },
    "first_court": {
      "default": "",
      "title": "First Court",
      "type": "string"
    },
    "outcome": {
      "default": "",
      "title": "Outcome",
      "type": "string"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    },
    "variants": {
      "default": "",
      "title": "Variants",
      "type": "string"
    },
    "top": {
      "default": 20,
      "title": "Top",
      "type": "integer"
    },
    "detail": {
      "default": "brief",
      "title": "Detail",
      "type": "string"
    },
    "appellant_role": {
      "default": "",
      "title": "Appellant Role",
      "type": "string"
    },
    "judge_id": {
      "default": 0,
      "title": "Judge Id",
      "type": "integer"
    },
    "norms": {
      "default": "",
      "title": "Norms",
      "type": "string"
    },
    "year_from": {
      "default": 0,
      "title": "Year From",
      "type": "integer"
    },
    "year_to": {
      "default": 0,
      "title": "Year To",
      "type": "integer"
    },
    "proc": {
      "default": "",
      "title": "Proc",
      "type": "string"
    }
  },
  "title": "oblsud_probeArguments",
  "type": "object"
}

oblsud_parties

Find a party and an organization’s INN for filtering.

ParameterTypeRequiredDefault
namestring—""
courtstring—""
yearstring—""
date_fromstring—""
date_tostring—""
limitinteger—20
sessionstring—""
innstring—""
only_orgboolean—false
inputSchema · JSON Schema
{
  "properties": {
    "name": {
      "default": "",
      "title": "Name",
      "type": "string"
    },
    "court": {
      "default": "",
      "title": "Court",
      "type": "string"
    },
    "year": {
      "default": "",
      "title": "Year",
      "type": "string"
    },
    "date_from": {
      "default": "",
      "title": "Date From",
      "type": "string"
    },
    "date_to": {
      "default": "",
      "title": "Date To",
      "type": "string"
    },
    "limit": {
      "default": 20,
      "title": "Limit",
      "type": "integer"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    },
    "inn": {
      "default": "",
      "title": "Inn",
      "type": "string"
    },
    "only_org": {
      "default": false,
      "title": "Only Org",
      "type": "boolean"
    }
  },
  "title": "oblsud_partiesArguments",
  "type": "object"
}

oblsud_aggregate

Distribution by the by parameter using supported schema filters.

ParameterTypeRequiredDefault
bystring—"court"
querystring—""
courtstring—""
yearstring—""
kindstring—""
date_fromstring—""
date_tostring—""
judgestring—""
partystring—""
categorystring—""
first_courtstring—""
outcomestring—""
limitinteger—20
sessionstring—""
appellant_rolestring—""
groundsstring—""
judge_idinteger—0
year_frominteger—0
year_tointeger—0
procstring—""
inputSchema · JSON Schema
{
  "properties": {
    "by": {
      "default": "court",
      "title": "By",
      "type": "string"
    },
    "query": {
      "default": "",
      "title": "Query",
      "type": "string"
    },
    "court": {
      "default": "",
      "title": "Court",
      "type": "string"
    },
    "year": {
      "default": "",
      "title": "Year",
      "type": "string"
    },
    "kind": {
      "default": "",
      "title": "Kind",
      "type": "string"
    },
    "date_from": {
      "default": "",
      "title": "Date From",
      "type": "string"
    },
    "date_to": {
      "default": "",
      "title": "Date To",
      "type": "string"
    },
    "judge": {
      "default": "",
      "title": "Judge",
      "type": "string"
    },
    "party": {
      "default": "",
      "title": "Party",
      "type": "string"
    },
    "category": {
      "default": "",
      "title": "Category",
      "type": "string"
    },
    "first_court": {
      "default": "",
      "title": "First Court",
      "type": "string"
    },
    "outcome": {
      "default": "",
      "title": "Outcome",
      "type": "string"
    },
    "limit": {
      "default": 20,
      "title": "Limit",
      "type": "integer"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    },
    "appellant_role": {
      "default": "",
      "title": "Appellant Role",
      "type": "string"
    },
    "grounds": {
      "default": "",
      "title": "Grounds",
      "type": "string"
    },
    "judge_id": {
      "default": 0,
      "title": "Judge Id",
      "type": "integer"
    },
    "year_from": {
      "default": 0,
      "title": "Year From",
      "type": "integer"
    },
    "year_to": {
      "default": 0,
      "title": "Year To",
      "type": "integer"
    },
    "proc": {
      "default": "",
      "title": "Proc",
      "type": "string"
    }
  },
  "title": "oblsud_aggregateArguments",
  "type": "object"
}

oblsud_stats

Court decision counts and supported filter values.

ParameterTypeRequiredDefault
courtstring—""
yearstring—""
sessionstring—""
inputSchema · JSON Schema
{
  "properties": {
    "court": {
      "default": "",
      "title": "Court",
      "type": "string"
    },
    "year": {
      "default": "",
      "title": "Year",
      "type": "string"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    }
  },
  "title": "oblsud_statsArguments",
  "type": "object"
}

oblsud_verify_quote

Check whether a quotation appears verbatim in a selected court decision.

ParameterTypeRequiredDefault
act_keystring—""
courtstring—""
numberstring—""
quotestring—""
sessionstring—""
act_idinteger—0
inputSchema · JSON Schema
{
  "properties": {
    "act_key": {
      "default": "",
      "title": "Act Key",
      "type": "string"
    },
    "court": {
      "default": "",
      "title": "Court",
      "type": "string"
    },
    "number": {
      "default": "",
      "title": "Number",
      "type": "string"
    },
    "quote": {
      "default": "",
      "title": "Quote",
      "type": "string"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    },
    "act_id": {
      "default": 0,
      "title": "Act Id",
      "type": "integer"
    }
  },
  "title": "oblsud_verify_quoteArguments",
  "type": "object"
}

oblsud_acts

Sections of several court decisions from an act_ids list.

ParameterTypeRequiredDefault
act_idsstringyes—
partstring—"facts"
limitinteger—0
cursorinteger—0
budgetinteger—0
sessionstring—""
inputSchema · JSON Schema
{
  "properties": {
    "act_ids": {
      "title": "Act Ids",
      "type": "string"
    },
    "part": {
      "default": "facts",
      "title": "Part",
      "type": "string"
    },
    "limit": {
      "default": 0,
      "title": "Limit",
      "type": "integer"
    },
    "cursor": {
      "default": 0,
      "title": "Cursor",
      "type": "integer"
    },
    "budget": {
      "default": 0,
      "title": "Budget",
      "type": "integer"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    }
  },
  "required": [
    "act_ids"
  ],
  "title": "oblsud_actsArguments",
  "type": "object"
}

oblsud_categories

Case category names for the category filter.

ParameterTypeRequiredDefault
containsstring—""
rootstring—""
limitinteger—40
sessionstring—""
inputSchema · JSON Schema
{
  "properties": {
    "contains": {
      "default": "",
      "title": "Contains",
      "type": "string"
    },
    "root": {
      "default": "",
      "title": "Root",
      "type": "string"
    },
    "limit": {
      "default": 40,
      "title": "Limit",
      "type": "integer"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    }
  },
  "title": "oblsud_categoriesArguments",
  "type": "object"
}

oblsud_judges

Find a judge and judge_id for filtering.

ParameterTypeRequiredDefault
surnamestring—""
courtstring—""
limitinteger—20
sessionstring—""
inputSchema · JSON Schema
{
  "properties": {
    "surname": {
      "default": "",
      "title": "Surname",
      "type": "string"
    },
    "court": {
      "default": "",
      "title": "Court",
      "type": "string"
    },
    "limit": {
      "default": 20,
      "title": "Limit",
      "type": "integer"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    }
  },
  "title": "oblsud_judgesArguments",
  "type": "object"
}

case_by_uid

Related proceedings for a case UID.

ParameterTypeRequiredDefault
uidstring—""
sessionstring—""
inputSchema · JSON Schema
{
  "properties": {
    "uid": {
      "default": "",
      "title": "Uid",
      "type": "string"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    }
  },
  "title": "case_by_uidArguments",
  "type": "object"
}

raysud_case

District-court case record by court and number, UID or selected court decision.

ParameterTypeRequiredDefault
courtstring—""
numberstring—""
uidstring—""
sessionstring—""
limitinteger—20
cursorinteger—0
act_idinteger—0
act_idsstring—""
inputSchema · JSON Schema
{
  "properties": {
    "court": {
      "default": "",
      "title": "Court",
      "type": "string"
    },
    "number": {
      "default": "",
      "title": "Number",
      "type": "string"
    },
    "uid": {
      "default": "",
      "title": "Uid",
      "type": "string"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    },
    "limit": {
      "default": 20,
      "title": "Limit",
      "type": "integer"
    },
    "cursor": {
      "default": 0,
      "title": "Cursor",
      "type": "integer"
    },
    "act_id": {
      "default": 0,
      "title": "Act Id",
      "type": "integer"
    },
    "act_ids": {
      "default": "",
      "title": "Act Ids",
      "type": "string"
    }
  },
  "title": "raysud_caseArguments",
  "type": "object"
}

raysud_act

Text of a district-court decision using the identifier in its case record.

ParameterTypeRequiredDefault
act_keystring—""
courtstring—""
numberstring—""
uidstring—""
datestring—""
partinteger | string—0
aroundstring—""
offsetinteger—0
lengthinteger—0
sessionstring—""
act_idinteger—0
inputSchema · JSON Schema
{
  "properties": {
    "act_key": {
      "default": "",
      "title": "Act Key",
      "type": "string"
    },
    "court": {
      "default": "",
      "title": "Court",
      "type": "string"
    },
    "number": {
      "default": "",
      "title": "Number",
      "type": "string"
    },
    "uid": {
      "default": "",
      "title": "Uid",
      "type": "string"
    },
    "date": {
      "default": "",
      "title": "Date",
      "type": "string"
    },
    "part": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "string"
        }
      ],
      "default": 0,
      "title": "Part"
    },
    "around": {
      "default": "",
      "title": "Around",
      "type": "string"
    },
    "offset": {
      "default": 0,
      "title": "Offset",
      "type": "integer"
    },
    "length": {
      "default": 0,
      "title": "Length",
      "type": "integer"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    },
    "act_id": {
      "default": 0,
      "title": "Act Id",
      "type": "integer"
    }
  },
  "title": "raysud_actArguments",
  "type": "object"
}

raysud_courts

District and city court names, regions and codes; next_cursor continues the list.

ParameterTypeRequiredDefault
containsstring—""
sessionstring—""
regionstring—""
codestring—""
limitinteger—100
cursorinteger—0
inputSchema · JSON Schema
{
  "properties": {
    "contains": {
      "default": "",
      "title": "Contains",
      "type": "string"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    },
    "region": {
      "default": "",
      "title": "Region",
      "type": "string"
    },
    "code": {
      "default": "",
      "title": "Code",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "title": "Limit",
      "type": "integer"
    },
    "cursor": {
      "default": 0,
      "title": "Cursor",
      "type": "integer"
    }
  },
  "title": "raysud_courtsArguments",
  "type": "object"
}

raysud_by_norm

Court decisions by legal provision and the section mentioning it.

ParameterTypeRequiredDefault
codestringyes—
articlestringyes—
partstring—""
querystring—""
courtstring—""
yearstring—""
kindstring—""
date_fromstring—""
date_tostring—""
judgestring—""
partystring—""
categorystring—""
first_courtstring—""
outcomestring—""
limitinteger—20
sessionstring—""
pointstring—""
zonestring—""
include_frameboolean—true
with_normstring—""
judge_idinteger | string—0
procstring—""
inputSchema · JSON Schema
{
  "properties": {
    "code": {
      "title": "Code",
      "type": "string"
    },
    "article": {
      "title": "Article",
      "type": "string"
    },
    "part": {
      "default": "",
      "title": "Part",
      "type": "string"
    },
    "query": {
      "default": "",
      "title": "Query",
      "type": "string"
    },
    "court": {
      "default": "",
      "title": "Court",
      "type": "string"
    },
    "year": {
      "default": "",
      "title": "Year",
      "type": "string"
    },
    "kind": {
      "default": "",
      "title": "Kind",
      "type": "string"
    },
    "date_from": {
      "default": "",
      "title": "Date From",
      "type": "string"
    },
    "date_to": {
      "default": "",
      "title": "Date To",
      "type": "string"
    },
    "judge": {
      "default": "",
      "title": "Judge",
      "type": "string"
    },
    "party": {
      "default": "",
      "title": "Party",
      "type": "string"
    },
    "category": {
      "default": "",
      "title": "Category",
      "type": "string"
    },
    "first_court": {
      "default": "",
      "title": "First Court",
      "type": "string"
    },
    "outcome": {
      "default": "",
      "title": "Outcome",
      "type": "string"
    },
    "limit": {
      "default": 20,
      "title": "Limit",
      "type": "integer"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    },
    "point": {
      "default": "",
      "title": "Point",
      "type": "string"
    },
    "zone": {
      "default": "",
      "title": "Zone",
      "type": "string"
    },
    "include_frame": {
      "default": true,
      "title": "Include Frame",
      "type": "boolean"
    },
    "with_norm": {
      "default": "",
      "title": "With Norm",
      "type": "string"
    },
    "judge_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "string"
        }
      ],
      "default": 0,
      "title": "Judge Id"
    },
    "proc": {
      "default": "",
      "title": "Proc",
      "type": "string"
    }
  },
  "required": [
    "code",
    "article"
  ],
  "title": "raysud_by_normArguments",
  "type": "object"
}

raysud_probe

Compare match counts for several search formulations.

ParameterTypeRequiredDefault
queriesstring—""
courtstring—""
yearstring—""
kindstring—""
date_fromstring—""
date_tostring—""
judgestring—""
partystring—""
categorystring—""
first_courtstring—""
outcomestring—""
sessionstring—""
variantsstring—""
topinteger—20
detailstring—"brief"
appellant_rolestring—""
judge_idinteger | string—0
normsstring—""
year_frominteger—0
year_tointeger—0
procstring—""
inputSchema · JSON Schema
{
  "properties": {
    "queries": {
      "default": "",
      "title": "Queries",
      "type": "string"
    },
    "court": {
      "default": "",
      "title": "Court",
      "type": "string"
    },
    "year": {
      "default": "",
      "title": "Year",
      "type": "string"
    },
    "kind": {
      "default": "",
      "title": "Kind",
      "type": "string"
    },
    "date_from": {
      "default": "",
      "title": "Date From",
      "type": "string"
    },
    "date_to": {
      "default": "",
      "title": "Date To",
      "type": "string"
    },
    "judge": {
      "default": "",
      "title": "Judge",
      "type": "string"
    },
    "party": {
      "default": "",
      "title": "Party",
      "type": "string"
    },
    "category": {
      "default": "",
      "title": "Category",
      "type": "string"
    },
    "first_court": {
      "default": "",
      "title": "First Court",
      "type": "string"
    },
    "outcome": {
      "default": "",
      "title": "Outcome",
      "type": "string"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    },
    "variants": {
      "default": "",
      "title": "Variants",
      "type": "string"
    },
    "top": {
      "default": 20,
      "title": "Top",
      "type": "integer"
    },
    "detail": {
      "default": "brief",
      "title": "Detail",
      "type": "string"
    },
    "appellant_role": {
      "default": "",
      "title": "Appellant Role",
      "type": "string"
    },
    "judge_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "string"
        }
      ],
      "default": 0,
      "title": "Judge Id"
    },
    "norms": {
      "default": "",
      "title": "Norms",
      "type": "string"
    },
    "year_from": {
      "default": 0,
      "title": "Year From",
      "type": "integer"
    },
    "year_to": {
      "default": 0,
      "title": "Year To",
      "type": "integer"
    },
    "proc": {
      "default": "",
      "title": "Proc",
      "type": "string"
    }
  },
  "title": "raysud_probeArguments",
  "type": "object"
}

raysud_aggregate

Distribution by the by parameter using supported schema filters.

ParameterTypeRequiredDefault
bystring—"court"
querystring—""
courtstring—""
yearstring—""
kindstring—""
date_fromstring—""
date_tostring—""
judgestring—""
partystring—""
categorystring—""
first_courtstring—""
outcomestring—""
limitinteger—20
sessionstring—""
appellant_rolestring—""
groundsstring—""
judge_idinteger | string—0
year_frominteger—0
year_tointeger—0
procstring—""
party_rolestring—""
unitstring—"act"
normsstring—""
textstring—""
phrasestring—""
norms_zonestring—""
areastring—""
inputSchema · JSON Schema
{
  "properties": {
    "by": {
      "default": "court",
      "title": "By",
      "type": "string"
    },
    "query": {
      "default": "",
      "title": "Query",
      "type": "string"
    },
    "court": {
      "default": "",
      "title": "Court",
      "type": "string"
    },
    "year": {
      "default": "",
      "title": "Year",
      "type": "string"
    },
    "kind": {
      "default": "",
      "title": "Kind",
      "type": "string"
    },
    "date_from": {
      "default": "",
      "title": "Date From",
      "type": "string"
    },
    "date_to": {
      "default": "",
      "title": "Date To",
      "type": "string"
    },
    "judge": {
      "default": "",
      "title": "Judge",
      "type": "string"
    },
    "party": {
      "default": "",
      "title": "Party",
      "type": "string"
    },
    "category": {
      "default": "",
      "title": "Category",
      "type": "string"
    },
    "first_court": {
      "default": "",
      "title": "First Court",
      "type": "string"
    },
    "outcome": {
      "default": "",
      "title": "Outcome",
      "type": "string"
    },
    "limit": {
      "default": 20,
      "title": "Limit",
      "type": "integer"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    },
    "appellant_role": {
      "default": "",
      "title": "Appellant Role",
      "type": "string"
    },
    "grounds": {
      "default": "",
      "title": "Grounds",
      "type": "string"
    },
    "judge_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "string"
        }
      ],
      "default": 0,
      "title": "Judge Id"
    },
    "year_from": {
      "default": 0,
      "title": "Year From",
      "type": "integer"
    },
    "year_to": {
      "default": 0,
      "title": "Year To",
      "type": "integer"
    },
    "proc": {
      "default": "",
      "title": "Proc",
      "type": "string"
    },
    "party_role": {
      "default": "",
      "title": "Party Role",
      "type": "string"
    },
    "unit": {
      "default": "act",
      "title": "Unit",
      "type": "string"
    },
    "norms": {
      "default": "",
      "title": "Norms",
      "type": "string"
    },
    "text": {
      "default": "",
      "title": "Text",
      "type": "string"
    },
    "phrase": {
      "default": "",
      "title": "Phrase",
      "type": "string"
    },
    "norms_zone": {
      "default": "",
      "title": "Norms Zone",
      "type": "string"
    },
    "area": {
      "default": "",
      "title": "Area",
      "type": "string"
    }
  },
  "title": "raysud_aggregateArguments",
  "type": "object"
}

raysud_parties

Find a party and its party_id for filtering.

ParameterTypeRequiredDefault
namestring—""
courtstring—""
yearstring—""
date_fromstring—""
date_tostring—""
limitinteger—20
sessionstring—""
innstring—""
only_orgboolean—false
judgestring—""
judge_idinteger | string—0
party_rolestring—""
inputSchema · JSON Schema
{
  "properties": {
    "name": {
      "default": "",
      "title": "Name",
      "type": "string"
    },
    "court": {
      "default": "",
      "title": "Court",
      "type": "string"
    },
    "year": {
      "default": "",
      "title": "Year",
      "type": "string"
    },
    "date_from": {
      "default": "",
      "title": "Date From",
      "type": "string"
    },
    "date_to": {
      "default": "",
      "title": "Date To",
      "type": "string"
    },
    "limit": {
      "default": 20,
      "title": "Limit",
      "type": "integer"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    },
    "inn": {
      "default": "",
      "title": "Inn",
      "type": "string"
    },
    "only_org": {
      "default": false,
      "title": "Only Org",
      "type": "boolean"
    },
    "judge": {
      "default": "",
      "title": "Judge",
      "type": "string"
    },
    "judge_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "string"
        }
      ],
      "default": 0,
      "title": "Judge Id"
    },
    "party_role": {
      "default": "",
      "title": "Party Role",
      "type": "string"
    }
  },
  "title": "raysud_partiesArguments",
  "type": "object"
}

raysud_judges

Find a judge and judge_id for filtering.

ParameterTypeRequiredDefault
surnamestring—""
courtstring—""
limitinteger—20
sessionstring—""
inputSchema · JSON Schema
{
  "properties": {
    "surname": {
      "default": "",
      "title": "Surname",
      "type": "string"
    },
    "court": {
      "default": "",
      "title": "Court",
      "type": "string"
    },
    "limit": {
      "default": 20,
      "title": "Limit",
      "type": "integer"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    }
  },
  "title": "raysud_judgesArguments",
  "type": "object"
}

raysud_categories

Case category names for the category filter.

ParameterTypeRequiredDefault
containsstring—""
rootstring—""
limitinteger—40
sessionstring—""
inputSchema · JSON Schema
{
  "properties": {
    "contains": {
      "default": "",
      "title": "Contains",
      "type": "string"
    },
    "root": {
      "default": "",
      "title": "Root",
      "type": "string"
    },
    "limit": {
      "default": 40,
      "title": "Limit",
      "type": "integer"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    }
  },
  "title": "raysud_categoriesArguments",
  "type": "object"
}

raysud_acts

Sections of several court decisions from an act_ids list.

ParameterTypeRequiredDefault
act_idsstringyes—
partstring—"facts"
limitinteger—0
cursorinteger—0
budgetinteger—0
sessionstring—""
inputSchema · JSON Schema
{
  "properties": {
    "act_ids": {
      "title": "Act Ids",
      "type": "string"
    },
    "part": {
      "default": "facts",
      "title": "Part",
      "type": "string"
    },
    "limit": {
      "default": 0,
      "title": "Limit",
      "type": "integer"
    },
    "cursor": {
      "default": 0,
      "title": "Cursor",
      "type": "integer"
    },
    "budget": {
      "default": 0,
      "title": "Budget",
      "type": "integer"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    }
  },
  "required": [
    "act_ids"
  ],
  "title": "raysud_actsArguments",
  "type": "object"
}

raysud_verify_quote

Check whether a quotation appears verbatim in a selected court decision.

ParameterTypeRequiredDefault
act_keystring—""
courtstring—""
numberstring—""
quotestring—""
sessionstring—""
act_idinteger—0
inputSchema · JSON Schema
{
  "properties": {
    "act_key": {
      "default": "",
      "title": "Act Key",
      "type": "string"
    },
    "court": {
      "default": "",
      "title": "Court",
      "type": "string"
    },
    "number": {
      "default": "",
      "title": "Number",
      "type": "string"
    },
    "quote": {
      "default": "",
      "title": "Quote",
      "type": "string"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    },
    "act_id": {
      "default": 0,
      "title": "Act Id",
      "type": "integer"
    }
  },
  "title": "raysud_verify_quoteArguments",
  "type": "object"
}

raysud_stats

Court decision counts and supported filter values.

ParameterTypeRequiredDefault
courtstring—""
yearstring—""
sessionstring—""
inputSchema · JSON Schema
{
  "properties": {
    "court": {
      "default": "",
      "title": "Court",
      "type": "string"
    },
    "year": {
      "default": "",
      "title": "Year",
      "type": "string"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    }
  },
  "title": "raysud_statsArguments",
  "type": "object"
}

vs_by_norm

Court decisions by legal provision and the section mentioning it.

ParameterTypeRequiredDefault
lawstringyes—
articlestring—""
partstring—""
pointstring—""
zonestring—""
querystring—""
categorystring—"all"
yearstring—""
year_frominteger—0
year_tointeger—0
act_typestring—""
procstring—""
case_typestring—""
chamberstring—""
issuerstring—""
groundstring—""
applicant_typestring—""
topicstring—""
limitinteger—5
cursorinteger—0
inputSchema · JSON Schema
{
  "properties": {
    "law": {
      "title": "Law",
      "type": "string"
    },
    "article": {
      "default": "",
      "title": "Article",
      "type": "string"
    },
    "part": {
      "default": "",
      "title": "Part",
      "type": "string"
    },
    "point": {
      "default": "",
      "title": "Point",
      "type": "string"
    },
    "zone": {
      "default": "",
      "title": "Zone",
      "type": "string"
    },
    "query": {
      "default": "",
      "title": "Query",
      "type": "string"
    },
    "category": {
      "default": "all",
      "title": "Category",
      "type": "string"
    },
    "year": {
      "default": "",
      "title": "Year",
      "type": "string"
    },
    "year_from": {
      "default": 0,
      "title": "Year From",
      "type": "integer"
    },
    "year_to": {
      "default": 0,
      "title": "Year To",
      "type": "integer"
    },
    "act_type": {
      "default": "",
      "title": "Act Type",
      "type": "string"
    },
    "proc": {
      "default": "",
      "title": "Proc",
      "type": "string"
    },
    "case_type": {
      "default": "",
      "title": "Case Type",
      "type": "string"
    },
    "chamber": {
      "default": "",
      "title": "Chamber",
      "type": "string"
    },
    "issuer": {
      "default": "",
      "title": "Issuer",
      "type": "string"
    },
    "ground": {
      "default": "",
      "title": "Ground",
      "type": "string"
    },
    "applicant_type": {
      "default": "",
      "title": "Applicant Type",
      "type": "string"
    },
    "topic": {
      "default": "",
      "title": "Topic",
      "type": "string"
    },
    "limit": {
      "default": 5,
      "title": "Limit",
      "type": "integer"
    },
    "cursor": {
      "default": 0,
      "title": "Cursor",
      "type": "integer"
    }
  },
  "required": [
    "law"
  ],
  "title": "vs_by_normArguments",
  "type": "object"
}

vs_act

One court decision’s text, a selected section or text window.

ParameterTypeRequiredDefault
act_idstringyes—
partstring—"full"
categorystring—"all"
offsetinteger—0
lengthinteger—12000
include_commonboolean—false
source_versionstring—""
norms_offsetinteger—-1
norms_limitinteger—20
inputSchema · JSON Schema
{
  "properties": {
    "act_id": {
      "title": "Act Id",
      "type": "string"
    },
    "part": {
      "default": "full",
      "title": "Part",
      "type": "string"
    },
    "category": {
      "default": "all",
      "title": "Category",
      "type": "string"
    },
    "offset": {
      "default": 0,
      "title": "Offset",
      "type": "integer"
    },
    "length": {
      "default": 12000,
      "title": "Length",
      "type": "integer"
    },
    "include_common": {
      "default": false,
      "title": "Include Common",
      "type": "boolean"
    },
    "source_version": {
      "default": "",
      "title": "Source Version",
      "type": "string"
    },
    "norms_offset": {
      "default": -1,
      "title": "Norms Offset",
      "type": "integer"
    },
    "norms_limit": {
      "default": 20,
      "title": "Norms Limit",
      "type": "integer"
    }
  },
  "required": [
    "act_id"
  ],
  "title": "vs_actArguments",
  "type": "object"
}

vs_aggregate

Distribution by the by parameter using supported schema filters.

ParameterTypeRequiredDefault
bystring—"year"
querystring—""
categorystring—"all"
yearstring—""
year_frominteger—0
year_tointeger—0
act_typestring—""
procstring—""
case_typestring—""
chamberstring—""
issuerstring—""
groundstring—""
applicant_typestring—""
topicstring—""
lawstring—""
articlestring—""
partstring—""
pointstring—""
zonestring—""
limitinteger—50
inputSchema · JSON Schema
{
  "properties": {
    "by": {
      "default": "year",
      "title": "By",
      "type": "string"
    },
    "query": {
      "default": "",
      "title": "Query",
      "type": "string"
    },
    "category": {
      "default": "all",
      "title": "Category",
      "type": "string"
    },
    "year": {
      "default": "",
      "title": "Year",
      "type": "string"
    },
    "year_from": {
      "default": 0,
      "title": "Year From",
      "type": "integer"
    },
    "year_to": {
      "default": 0,
      "title": "Year To",
      "type": "integer"
    },
    "act_type": {
      "default": "",
      "title": "Act Type",
      "type": "string"
    },
    "proc": {
      "default": "",
      "title": "Proc",
      "type": "string"
    },
    "case_type": {
      "default": "",
      "title": "Case Type",
      "type": "string"
    },
    "chamber": {
      "default": "",
      "title": "Chamber",
      "type": "string"
    },
    "issuer": {
      "default": "",
      "title": "Issuer",
      "type": "string"
    },
    "ground": {
      "default": "",
      "title": "Ground",
      "type": "string"
    },
    "applicant_type": {
      "default": "",
      "title": "Applicant Type",
      "type": "string"
    },
    "topic": {
      "default": "",
      "title": "Topic",
      "type": "string"
    },
    "law": {
      "default": "",
      "title": "Law",
      "type": "string"
    },
    "article": {
      "default": "",
      "title": "Article",
      "type": "string"
    },
    "part": {
      "default": "",
      "title": "Part",
      "type": "string"
    },
    "point": {
      "default": "",
      "title": "Point",
      "type": "string"
    },
    "zone": {
      "default": "",
      "title": "Zone",
      "type": "string"
    },
    "limit": {
      "default": 50,
      "title": "Limit",
      "type": "integer"
    }
  },
  "title": "vs_aggregateArguments",
  "type": "object"
}

vs_stats

Court decision counts and supported filter values.

ParameterTypeRequiredDefault
categorystring—"all"
inputSchema · JSON Schema
{
  "properties": {
    "category": {
      "default": "all",
      "title": "Category",
      "type": "string"
    }
  },
  "title": "vs_statsArguments",
  "type": "object"
}

vs_verify_quote

Check whether a quotation appears verbatim in a selected court decision.

ParameterTypeRequiredDefault
act_idstringyes—
quotestringyes—
categorystring—"all"
source_versionstring—""
inputSchema · JSON Schema
{
  "properties": {
    "act_id": {
      "title": "Act Id",
      "type": "string"
    },
    "quote": {
      "title": "Quote",
      "type": "string"
    },
    "category": {
      "default": "all",
      "title": "Category",
      "type": "string"
    },
    "source_version": {
      "default": "",
      "title": "Source Version",
      "type": "string"
    }
  },
  "required": [
    "act_id",
    "quote"
  ],
  "title": "vs_verify_quoteArguments",
  "type": "object"
}

vs_cites

Citations from a court decision and to it.

ParameterTypeRequiredDefault
act_idstringyes—
categorystring—"all"
directionstring—"out"
limitinteger—30
inputSchema · JSON Schema
{
  "properties": {
    "act_id": {
      "title": "Act Id",
      "type": "string"
    },
    "category": {
      "default": "all",
      "title": "Category",
      "type": "string"
    },
    "direction": {
      "default": "out",
      "title": "Direction",
      "type": "string"
    },
    "limit": {
      "default": 30,
      "title": "Limit",
      "type": "integer"
    }
  },
  "required": [
    "act_id"
  ],
  "title": "vs_citesArguments",
  "type": "object"
}

ks_by_norm

Court decisions by legal provision and the section mentioning it.

ParameterTypeRequiredDefault
lawstringyes—
articlestring—""
partstring—""
pointstring—""
zonestring—""
querystring—""
categorystring—"all"
yearstring—""
year_frominteger—0
year_tointeger—0
act_typestring—""
procstring—""
case_typestring—""
chamberstring—""
issuerstring—""
groundstring—""
applicant_typestring—""
topicstring—""
limitinteger—5
cursorinteger—0
inputSchema · JSON Schema
{
  "properties": {
    "law": {
      "title": "Law",
      "type": "string"
    },
    "article": {
      "default": "",
      "title": "Article",
      "type": "string"
    },
    "part": {
      "default": "",
      "title": "Part",
      "type": "string"
    },
    "point": {
      "default": "",
      "title": "Point",
      "type": "string"
    },
    "zone": {
      "default": "",
      "title": "Zone",
      "type": "string"
    },
    "query": {
      "default": "",
      "title": "Query",
      "type": "string"
    },
    "category": {
      "default": "all",
      "title": "Category",
      "type": "string"
    },
    "year": {
      "default": "",
      "title": "Year",
      "type": "string"
    },
    "year_from": {
      "default": 0,
      "title": "Year From",
      "type": "integer"
    },
    "year_to": {
      "default": 0,
      "title": "Year To",
      "type": "integer"
    },
    "act_type": {
      "default": "",
      "title": "Act Type",
      "type": "string"
    },
    "proc": {
      "default": "",
      "title": "Proc",
      "type": "string"
    },
    "case_type": {
      "default": "",
      "title": "Case Type",
      "type": "string"
    },
    "chamber": {
      "default": "",
      "title": "Chamber",
      "type": "string"
    },
    "issuer": {
      "default": "",
      "title": "Issuer",
      "type": "string"
    },
    "ground": {
      "default": "",
      "title": "Ground",
      "type": "string"
    },
    "applicant_type": {
      "default": "",
      "title": "Applicant Type",
      "type": "string"
    },
    "topic": {
      "default": "",
      "title": "Topic",
      "type": "string"
    },
    "limit": {
      "default": 5,
      "title": "Limit",
      "type": "integer"
    },
    "cursor": {
      "default": 0,
      "title": "Cursor",
      "type": "integer"
    }
  },
  "required": [
    "law"
  ],
  "title": "ks_by_normArguments",
  "type": "object"
}

ks_act

One court decision’s text, a selected section or text window.

ParameterTypeRequiredDefault
act_idstringyes—
partstring—"full"
categorystring—"all"
offsetinteger—0
lengthinteger—12000
include_commonboolean—false
source_versionstring—""
norms_offsetinteger—-1
norms_limitinteger—20
inputSchema · JSON Schema
{
  "properties": {
    "act_id": {
      "title": "Act Id",
      "type": "string"
    },
    "part": {
      "default": "full",
      "title": "Part",
      "type": "string"
    },
    "category": {
      "default": "all",
      "title": "Category",
      "type": "string"
    },
    "offset": {
      "default": 0,
      "title": "Offset",
      "type": "integer"
    },
    "length": {
      "default": 12000,
      "title": "Length",
      "type": "integer"
    },
    "include_common": {
      "default": false,
      "title": "Include Common",
      "type": "boolean"
    },
    "source_version": {
      "default": "",
      "title": "Source Version",
      "type": "string"
    },
    "norms_offset": {
      "default": -1,
      "title": "Norms Offset",
      "type": "integer"
    },
    "norms_limit": {
      "default": 20,
      "title": "Norms Limit",
      "type": "integer"
    }
  },
  "required": [
    "act_id"
  ],
  "title": "ks_actArguments",
  "type": "object"
}

ks_aggregate

Distribution by the by parameter using supported schema filters.

ParameterTypeRequiredDefault
bystring—"year"
querystring—""
categorystring—"all"
yearstring—""
year_frominteger—0
year_tointeger—0
act_typestring—""
procstring—""
case_typestring—""
chamberstring—""
issuerstring—""
groundstring—""
applicant_typestring—""
topicstring—""
lawstring—""
articlestring—""
partstring—""
pointstring—""
zonestring—""
limitinteger—50
inputSchema · JSON Schema
{
  "properties": {
    "by": {
      "default": "year",
      "title": "By",
      "type": "string"
    },
    "query": {
      "default": "",
      "title": "Query",
      "type": "string"
    },
    "category": {
      "default": "all",
      "title": "Category",
      "type": "string"
    },
    "year": {
      "default": "",
      "title": "Year",
      "type": "string"
    },
    "year_from": {
      "default": 0,
      "title": "Year From",
      "type": "integer"
    },
    "year_to": {
      "default": 0,
      "title": "Year To",
      "type": "integer"
    },
    "act_type": {
      "default": "",
      "title": "Act Type",
      "type": "string"
    },
    "proc": {
      "default": "",
      "title": "Proc",
      "type": "string"
    },
    "case_type": {
      "default": "",
      "title": "Case Type",
      "type": "string"
    },
    "chamber": {
      "default": "",
      "title": "Chamber",
      "type": "string"
    },
    "issuer": {
      "default": "",
      "title": "Issuer",
      "type": "string"
    },
    "ground": {
      "default": "",
      "title": "Ground",
      "type": "string"
    },
    "applicant_type": {
      "default": "",
      "title": "Applicant Type",
      "type": "string"
    },
    "topic": {
      "default": "",
      "title": "Topic",
      "type": "string"
    },
    "law": {
      "default": "",
      "title": "Law",
      "type": "string"
    },
    "article": {
      "default": "",
      "title": "Article",
      "type": "string"
    },
    "part": {
      "default": "",
      "title": "Part",
      "type": "string"
    },
    "point": {
      "default": "",
      "title": "Point",
      "type": "string"
    },
    "zone": {
      "default": "",
      "title": "Zone",
      "type": "string"
    },
    "limit": {
      "default": 50,
      "title": "Limit",
      "type": "integer"
    }
  },
  "title": "ks_aggregateArguments",
  "type": "object"
}

ks_stats

Court decision counts and supported filter values.

ParameterTypeRequiredDefault
categorystring—"all"
inputSchema · JSON Schema
{
  "properties": {
    "category": {
      "default": "all",
      "title": "Category",
      "type": "string"
    }
  },
  "title": "ks_statsArguments",
  "type": "object"
}

ks_verify_quote

Check whether a quotation appears verbatim in a selected court decision.

ParameterTypeRequiredDefault
act_idstringyes—
quotestringyes—
categorystring—"all"
source_versionstring—""
inputSchema · JSON Schema
{
  "properties": {
    "act_id": {
      "title": "Act Id",
      "type": "string"
    },
    "quote": {
      "title": "Quote",
      "type": "string"
    },
    "category": {
      "default": "all",
      "title": "Category",
      "type": "string"
    },
    "source_version": {
      "default": "",
      "title": "Source Version",
      "type": "string"
    }
  },
  "required": [
    "act_id",
    "quote"
  ],
  "title": "ks_verify_quoteArguments",
  "type": "object"
}

ks_cites

Citations from a court decision and to it.

ParameterTypeRequiredDefault
act_idstringyes—
categorystring—"all"
directionstring—"out"
limitinteger—30
inputSchema · JSON Schema
{
  "properties": {
    "act_id": {
      "title": "Act Id",
      "type": "string"
    },
    "category": {
      "default": "all",
      "title": "Category",
      "type": "string"
    },
    "direction": {
      "default": "out",
      "title": "Direction",
      "type": "string"
    },
    "limit": {
      "default": 30,
      "title": "Limit",
      "type": "integer"
    }
  },
  "required": [
    "act_id"
  ],
  "title": "ks_citesArguments",
  "type": "object"
}

fas_stats

FAS decision counts by year, authority and type.

ParameterTypeRequiredDefault
sessionstring—""
inputSchema · JSON Schema
{
  "properties": {
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    }
  },
  "title": "fas_statsArguments",
  "type": "object"
}

fas_doc

FAS decision text by an identifier from search.

ParameterTypeRequiredDefault
docstring—""
aroundstring—""
offsetinteger—0
lengthinteger—0
budgetinteger—0
sessionstring—""
inputSchema · JSON Schema
{
  "properties": {
    "doc": {
      "default": "",
      "title": "Doc",
      "type": "string"
    },
    "around": {
      "default": "",
      "title": "Around",
      "type": "string"
    },
    "offset": {
      "default": 0,
      "title": "Offset",
      "type": "integer"
    },
    "length": {
      "default": 0,
      "title": "Length",
      "type": "integer"
    },
    "budget": {
      "default": 0,
      "title": "Budget",
      "type": "integer"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    }
  },
  "title": "fas_docArguments",
  "type": "object"
}

fas_verify_quote

Check a verbatim quotation in a FAS decision.

ParameterTypeRequiredDefault
docstring—""
quotestring—""
sessionstring—""
inputSchema · JSON Schema
{
  "properties": {
    "doc": {
      "default": "",
      "title": "Doc",
      "type": "string"
    },
    "quote": {
      "default": "",
      "title": "Quote",
      "type": "string"
    },
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    }
  },
  "title": "fas_verify_quoteArguments",
  "type": "object"
}

report_feedback

Tell the cat’s owner that a tool reply does not match its description.

ParameterTypeRequiredDefault
toolstringyes—
expectedstringyes—
actualstringyes—
severitystring—"medium"
argumentsobject | string | null—null
reproductionstring—""
response_excerptstring—""
follow_up_ofinteger—0
inputSchema · JSON Schema
{
  "properties": {
    "tool": {
      "title": "Tool",
      "type": "string"
    },
    "expected": {
      "title": "Expected",
      "type": "string"
    },
    "actual": {
      "title": "Actual",
      "type": "string"
    },
    "severity": {
      "default": "medium",
      "title": "Severity",
      "type": "string"
    },
    "arguments": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Arguments"
    },
    "reproduction": {
      "default": "",
      "title": "Reproduction",
      "type": "string"
    },
    "response_excerpt": {
      "default": "",
      "title": "Response Excerpt",
      "type": "string"
    },
    "follow_up_of": {
      "default": 0,
      "title": "Follow Up Of",
      "type": "integer"
    }
  },
  "required": [
    "tool",
    "expected",
    "actual"
  ],
  "title": "report_feedbackArguments",
  "type": "object"
}

feedback_status

Status and decision on your report_feedback submission.

ParameterTypeRequiredDefault
idinteger—0
inputSchema · JSON Schema
{
  "properties": {
    "id": {
      "default": 0,
      "title": "Id",
      "type": "integer"
    }
  },
  "title": "feedback_statusArguments",
  "type": "object"
}