Кот

API для разработчиков · Кот

Это API кота (amazing.cat) — поисковика по судебной практике, ведомственным актам и законам РФ для ИИ-агентов. Программы вызывают инструменты кота напрямую по MCP; чтобы искать через ИИ-агента, подключите в агент бесплатный MCP amazingcat («кот») по инструкции.

Доступ и лимиты

Бесплатный токен — на странице mcp.amazingcat.net/#get (в браузере). Если лимитов не хватает — напишите на alexey@amazingcat.net.

YOUR_AMAZINGCAT_TOKEN — ваш токен из формы; в Python и TypeScript он читается из переменной окружения AMAZINGCAT_TOKEN. Передавайте его в Authorization: Bearer. Держите токен на сервере, не вставляйте в URL или код браузера. ИИ-приложения с OAuth подключаются через браузерное подтверждение доступа.

ДоступЗа 60 секундВ сутки UTC
Бесплатный60300

Окно 60 секунд скользящее; сутки UTC начинаются в 00:00 UTC. Суточный лимит считается на ключ; со всех бесплатных ключей одной сети — тоже не больше 300 запросов за сутки. Один запрос может вернуть несколько документов.

При ограничении сервер сообщает Retry-After. tools/call может вернуть ограничение с HTTP 200: это не результат поиска. Проверяйте HTTP-статус, Retry-After и ошибки внутри ответа.

MCP и ответы

Адрес Streamable HTTP: https://mcp.amazingcat.net/mcp. Для POST передавайте Content-Type: application/json и Accept: application/json, text/event-stream. JSON-RPC возвращает result; ответ инструмента — в result.content[].text. Это строка с JSON, которую нужно разобрать второй раз.

При text/event-stream соберите строки data: одного события и разберите JSON события с id вашего запроса. notifications/initialized отправляется без id и получает HTTP 202. Имена и параметры инструментов перечислены в tools/list.

HTTPЧто делать
401Проверьте Authorization: Bearer и токен.
404Сессия неизвестна или закрыта: initialize заново, затем notifications/initialized.
429Подождите Retry-After и повторите запрос.
200Проверяйте Retry-After, JSON-RPC error и ошибки инструмента; HTTP 200 может содержать отказ по лимиту.

Сессия: что такое YOUR_MCP_SESSION_ID и где его взять

YOUR_MCP_SESSION_ID — значение заголовка Mcp-Session-Id в ответе на initialize. Это идентификатор подключения, а не токен доступа. Скопируйте его без имени заголовка и пробелов. Передавайте его вместе с Bearer во всех следующих вызовах этой сессии.

Последовательность ниже ищет Воздушный кодекс: initialize с выводом заголовков (-D -), сохранение идентификатора, notifications/initialized, затем 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

Идентификатор читается через 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()

Фиксированный срок жизни сессии не объявлен. После закрытия сессии или перезапуска сервера нужен новый initialize. Неверный или уже закрытый идентификатор возвращает HTTP 404 с JSON-RPC error.code=-32600; проверенные сообщения: «Session not found» и «Not Found: Session has been terminated». Удалите старый Mcp-Session-Id, выполните initialize и notifications/initialized заново, затем повторите вызов.

Вызовы в сессии расходуют лимит запросов: в частности, notifications/initialized, tools/list и tools/call. initialize не расходует лимит. Число возвращённых актов не меняет стоимость одного вызова.

Клиенты

Все четыре клиента выполняют один первый шаг примера про сумму взыскания: находят Воздушный кодекс, чтобы затем прочитать статьи 103, 105, 107 и 108. limit=5 нужен для выбора кодекса по названию.

Токен задайте на сервере:

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()

Вывод:

{
  "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())

Вывод:

{
  "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;
});

Вывод:

{
  "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

Вывод:

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

Python SDK: скачайте sdk.py и requirements.txt, затем python -m pip install -r requirements.txt. TypeScript: скачайте client.ts и package.json, затем npm install и npm start. raw.py и session.py требуют requests; curl.sh — curl, awk и Python 3. requirements.txt · package.json.

Сквозные примеры

Человек ставит задачу ИИ-агенту. Агент читает описания инструментов, выделяет нормы, выбирает фильтры и получает идентификаторы из ответов кота. MCP принимает структурированные параметры tools/call. Ниже показаны выбранные поля ответов; многоточие означает сокращённый фрагмент текста.

Решение по номеру дела и суду

Подключите кота

Подключите в ваш агент бесплатный MCP amazingcat («кот») по инструкции. Без подключения агент не сможет обратиться к коту.

Человек пишет агенту

Попроси кота показать, что решил Омский областной суд по делу № 33-2696/2024, и дать ссылку на определение.

Агент готовит поиск

Нужен один конкретный акт, а не подборка. Агент сначала находит код Омского областного суда по названию, затем карточку по номеру. Для ответа о результате читает резолютивную часть; нормы материального права для этого поиска задавать не нужно.

Шаг 1 · oblsud_courts

Из справочника выбирается именно Омский областной суд: код 55OS0000. Поиск по фрагменту также возвращает названия других судов.

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

Ответ кота — выбранные поля:

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

Шаг 2 · oblsud_case

court берётся из первой строки справочника; limit=1 соответствует просьбе об одном деле. act_key для следующего шага находится в акты[0].

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

Ответ кота — выбранные поля:

{
  "суд": {
    "код": "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"
}

Шаг 3 · oblsud_act

act_key скопирован из карточки выше. part=resolution просит резолютивную часть, которая отвечает на вопрос «что решил суд».

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

Ответ кота — выбранные поля:

{
  "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"
}

Агент отвечает человеку

Решение Кировского районного суда г. Омска от 26 декабря 2023 года оставлено без изменения, апелляционная жалоба — без удовлетворения. Номер дела — 33-2696/2024. Мотивированное определение изготовлено 14 июня 2024 года. Ссылка на документ — в поле «источник» ответа.

Прямые вызовы API этой цепочки

Подготовка сессии

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"}}}'

Найти дело по сторонам, суду и судье

Подключите кота

Подключите в ваш агент бесплатный MCP amazingcat («кот») по инструкции. Без подключения агент не сможет обратиться к коту.

Человек пишет агенту

Попроси кота найти иск Кузнецова Алексея Валерьевича к ПАО «Аэрофлот» в Кировском районном суде г. Омска, который рассматривала судья Бондаренко.

Агент готовит поиск

Агент выделяет истца, ответчика, суд и судью. Сначала находит код суда, затем party_id истца и judge_id судьи. raysud_search принимает эти фильтры и слова из текста; raysud_case открывает найденное дело по act_id. Для установления номера дела нормы права не нужны. ФИО в ответе сохраняются в маске.

Шаг 1 · raysud_courts

Агент выбирает Кировский районный суд г. Омска. Код 55RS0001 берётся из строки справочника.

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

Ответ кота — выбранные поля:

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

Ответ сокращён: ещё 1 элемент не показан.

Шаг 2 · raysud_parties

Имя задано человеком. Справочник возвращает его в маске и даёт party_id для следующего поиска.

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

Ответ кота — выбранные поля:

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

Шаг 3 · raysud_judges

Судья Бондаренко ищется в выбранном суде; judge_id берётся из ответа, а не вводится заранее.

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

Ответ кота — выбранные поля:

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

Шаг 4 · raysud_search

Поиск соединяет сторону, суд и судью. До десяти кандидатов позволяют проверить совпадение; найден один акт.

{
  "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"
    }
  }
}

Ответ кота — выбранные поля:

{
  "найдено": 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"
    }
  ]
}

Шаг 5 · raysud_case

Идентификатор акта берётся из первого результата поиска. Карточка даёт номер дела, судью, стороны и результат.

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

Ответ кота — выбранные поля:

{
  "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="
}

Агент отвечает человеку

Найдено дело № 2-249/2026 (2-5812/2025;) ~ М-4929/2025. Судья — Бондаренко Е.В., ответчик — ПАО «Аэрофлот», истец — «К******в А*****й В********ч». Иск удовлетворён частично. Ссылка на карточку — в ответе кота. Совпадение маски имени само по себе не устанавливает личность.

Прямые вызовы API этой цепочки

Подготовка сессии

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}}}'

Районные дела: исходы и проверка взыскания

Подключите кота

Подключите в ваш агент бесплатный MCP amazingcat («кот») по инструкции. Без подключения агент не сможет обратиться к коту.

Человек пишет агенту

Сколько дел ПАО «Аэрофлот» проиграл в районных судах по искам об аннулировании бронирований Екатеринбург — Пхукет? Попроси кота сначала показать распределение исходов и проверить пять решений.

Агент готовит поиск

Агент понимает спор об аннулировании авиабронирования и сначала проверяет нормы: ВК РФ 103 и 105 — договор и билет; 107 — прекращение договора перевозчиком; 108 — отказ пассажира. Эти основания различаются. Также проверяет ГК РФ 310, 393, 786 и Закон о защите прав потребителей 13, 15. Затем ищет напрямую через raysud_search и группирует исходы через raysud_aggregate. Агрегация считает акты, а не уникальные дела; для числа проигранных дел агент сверяет стороны и резолютивные части, объединяя акты одного дела. Нормы помогают оценить спор, но не заменяют название перевозчика и маршрут в поиске.

Шаг 1 · law_find

До пяти кандидатов для выбора нужного кодекса; название из candidates[0].name идёт в следующий вызов.

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

Ответ кота — выбранные поля:

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

Шаг 2 · law_get_text

Название кодекса — из law_find. Запрошены четыре статьи, необходимые для различения договора и двух оснований прекращения; размер окна рассчитан на эти статьи.

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

Ответ кота — выбранные поля:

{
  "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) если пассажиром заключен договор воздушной перевозки пассажира, предусматривающий условие о возврат…"
    }
  ]
}

Шаг 3 · law_get_text

Статьи об одностороннем отказе, убытках и договоре перевозки пассажира. ГК — название кодекса, а не скрытый идентификатор.

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

Ответ кота — выбранные поля:

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

Шаг 4 · law_get_text

Проверяются ответственность и компенсация морального вреда; применимость к обстоятельствам оценивает агент.

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

Ответ кота — выбранные поля:

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

Шаг 5 · raysud_aggregate

Тот же текстовый запрос группируется по исходу. limit=10 ограничивает число групп. Единица здесь — акт: распределение ещё нельзя назвать числом проигранных дел.

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

Ответ кота — выбранные поля:

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

Шаг 6 · raysud_search

Агент ищет решения с названием перевозчика, маршрутом и бронированием. Человек попросил начать с пяти решений, поэтому limit=5. Номера дел и act_id приходят в ответе.

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

Ответ кота — выбранные поля:

{
  "найдено": 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
}

Шаг 7 · raysud_acts

Список act_ids составляется из пяти результатов. Резолютивные части показывают, кто ответчик, что присуждено и кому. Агент сравнивает пары «суд — номер дела», чтобы не считать несколько актов одного дела отдельными поражениями.

{
  "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"
    }
  }
}

Ответ кота — выбранные поля:

{
  "показано": 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
}

Агент отвечает человеку

Первый этап: текстовый запрос дал 201 акт. Из них 118 относятся к делам с частичным удовлетворением иска, 18 — с удовлетворением, 4 — с отказом, 61 — с иным исходом. В пяти прочитанных решениях требования к «Аэрофлоту» удовлетворены в части: это пять разных дел с взысканием в пользу истца. Число 136 (118 + 18) нельзя выдать за число проигранных дел: сначала нужно объединить акты по делу и проверить ответчика и содержание каждого решения. Следующая страница поиска начинается с next_cursor из ответа.

Прямые вызовы API этой цепочки

Подготовка сессии

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"}}}'

Сравнить суммы по районным решениям

Подключите кота

Подключите в ваш агент бесплатный MCP amazingcat («кот») по инструкции. Без подключения агент не сможет обратиться к коту.

Человек пишет агенту

Какая самая большая сумма взыскана в пользу одного истца по искам к ПАО «Аэрофлот» об аннулированных бронированиях Екатеринбург — Пхукет? Попроси кота начать со сравнения пяти районных решений.

Агент готовит поиск

Агент выделяет перевозчика, маршрут и сумму именно присуждённого взыскания. Проверяет те же нормы о договоре перевозки, прекращении договора, убытках и защите потребителя. raysud_aggregate группирует акты по исходу, но не вычисляет денежный максимум. Поэтому агент ищет пять решений через raysud_search и читает их резолютивные части через raysud_acts. Идентификаторы берёт из поиска; одному делу и одному истцу соответствует одна сравниваемая сумма.

Шаг 1 · law_find

До пяти кандидатов для выбора нужного кодекса; название из candidates[0].name идёт в следующий вызов.

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

Ответ кота — выбранные поля:

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

Шаг 2 · law_get_text

Название кодекса — из law_find. Запрошены четыре статьи, необходимые для различения договора и двух оснований прекращения; размер окна рассчитан на эти статьи.

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

Ответ кота — выбранные поля:

{
  "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) если пассажиром заключен договор воздушной перевозки пассажира, предусматривающий условие о возврат…"
    }
  ]
}

Шаг 3 · law_get_text

Статьи об одностороннем отказе, убытках и договоре перевозки пассажира. ГК — название кодекса, а не скрытый идентификатор.

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

Ответ кота — выбранные поля:

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

Шаг 4 · law_get_text

Проверяются ответственность и компенсация морального вреда; применимость к обстоятельствам оценивает агент.

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

Ответ кота — выбранные поля:

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

Шаг 5 · raysud_search

Агент ищет решения с названием перевозчика, маршрутом и бронированием. Человек попросил начать с пяти решений, поэтому limit=5. Номера дел и act_id приходят в ответе.

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

Ответ кота — выбранные поля:

{
  "найдено": 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
}

Шаг 6 · raysud_acts

act_ids — из поискового ответа. Агент читает пять резолютивных частей и складывает суммы одному истцу: убытки, неустойку, компенсацию морального вреда, штраф и присуждённые расходы. Суммы, которые истец должен уплатить за билеты, и госпошлину в бюджет не включает.

{
  "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"
    }
  }
}

Ответ кота — выбранные поля:

{
  "показано": 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
}

Агент отвечает человеку

Среди пяти прочитанных решений наибольшее взыскание одному истцу — 296 463,81 руб., дело № 2-1208/2024 Сысертского районного суда: 115 879 руб. убытков + 76 480,14 руб. неустойки + 5 000 руб. морального вреда + 98 679,57 руб. штрафа + 425,10 руб. почтовых расходов. Госпошлина 5 347,18 руб. в бюджет в эту сумму не входит. Это результат сравнения пяти решений; чтобы назвать максимум по найденным делам, агент продолжает с next_cursor и сверяет последующее обжалование.

Прямые вызовы API этой цепочки

Подготовка сессии

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"}}}'

Практика Верховного Суда по норме

Подключите кота

Подключите в ваш агент бесплатный MCP amazingcat («кот») по инструкции. Без подключения агент не сможет обратиться к коту.

Человек пишет агенту

Попроси кота найти практику Верховного Суда по статье 112 ГПК РФ: когда позднее получение судебного акта позволяет восстановить срок кассационной жалобы? Разбери одно подходящее определение.

Агент готовит поиск

Агент выделяет процессуальный срок, кассационную жалобу и норму 112 ГПК. Для подборки выбирает search_practice с фильтром article и Верховным Судом, просит до пяти карточек, затем читает одну карточку через get_case. Идентификатор берётся из поиска; вывод относится к обстоятельствам прочитанного определения.

Шаг 1 · search_practice

Пять карточек — рабочая подборка для поиска без указанного количества. Для разбора выбирается первая релевантная карточка из results. ВС — поддерживаемый код корпуса Верховного Суда.

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

Ответ кота — выбранные поля:

{
  "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 элементов не показаны.

Шаг 2 · get_case

doc_id берётся из results[0]. Это определение № 56-КГ21-1-К9 от 06.04.2021.

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

Ответ кота — выбранные поля:

{
  "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"
}

Агент отвечает человеку

В определении № 56-КГ21-1-К9 от 06.04.2021 Верховный Суд восстановил срок: апелляционное определение направили только 20.05.2020. Суд оценивал позднее получение акта, добросовестность заявителя и разумность срока последующих действий. Это обоснование для проверки обстоятельств, а не автоматическое восстановление срока в другом деле. Документ: https://www.vsrf.ru/lk/practice/stor_pdf/1993400.

Прямые вызовы API этой цепочки

Подготовка сессии

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}}}'

Текст нормы на выбранную дату

Подключите кота

Подключите в ваш агент бесплатный MCP amazingcat («кот») по инструкции. Без подключения агент не сможет обратиться к коту.

Человек пишет агенту

Попроси кота показать статью 219 КАС РФ в редакции на 1 января 2025 года: какой срок для оспаривания действий или бездействия судебного пристава?

Агент готовит поиск

Агент выделяет административный иск по КАС, а не производство по КоАП, статью 219 и дату 2025-01-01. Сначала находит кодекс; для исторического текста использует law_get_text(as_of), а не get_norm_text с текущей редакцией. В ответе проверяет дату редакции статьи.

Шаг 1 · law_find

Выбирается название КАС РФ из candidates[0].name. До пяти вариантов достаточно для распознавания кодекса.

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

Ответ кота — выбранные поля:

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

Шаг 2 · law_get_text

act — название из law_find. articles и as_of следуют из просьбы; окно рассчитано на одну статью.

{
  "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": "Кодекс административного судопроизводства Российской Федерации"
    }
  }
}

Ответ кота — выбранные поля:

{
  "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. Пропуск установленного срока обращения в суд не является основанием для отказа в принят…"
    }
  ]
}

Агент отвечает человеку

Часть 3 статьи 219 КАС РФ устанавливает для административного иска об оспаривании решений, действий или бездействия судебного пристава-исполнителя десять дней со дня, когда стало известно о нарушении прав, свобод и законных интересов. Дата запроса редакции — 01.01.2025. Для конкретного дела отдельно устанавливаются дата осведомлённости и основания восстановления пропущенного срока.

Прямые вызовы API этой цепочки

Подготовка сессии

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": "Кодекс административного судопроизводства Российской Федерации"}}}'

Вычитать формулировку жалобы

Подключите кота

Подключите в ваш агент бесплатный MCP amazingcat («кот») по инструкции. Без подключения агент не сможет обратиться к коту.

Человек пишет агенту

Попроси кота вычитать фразу для жалобы по гражданскому делу: «Суд просто проигнорировал мои доводы, хотя они могли повлиять на результат дела». Дай три образца языка Верховного Суда и одну редакцию, сохранив смысл.

Агент готовит поиск

Агент отделяет вычитку от поиска правовой позиции. Проверяет допустимую длину через wording_stats, передаёт целое предложение в wording_review, выбирает гражданское производство и три образца. Образцы помогают заменить разговорные слова; факты, нормы и выводы чужого дела в жалобу не переносятся.

Шаг 1 · wording_stats

Лимиты относятся к вычитке текста: числу предложений и их длине.

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

Ответ кота — выбранные поля:

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

Шаг 2 · wording_review

sentences содержит текст человека; proceeding=civil задан видом жалобы; per_sentence=3 — числом образцов из просьбы. Частоты помогают оценить употребление слов, а не юридическую правильность.

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

Ответ кота — выбранные поля:

{
  "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
        }
      ]
    }
  ]
}

Агент отвечает человеку

Вариант: «Суд оставил без внимания доводы заявителя, которые могли иметь значение для разрешения спора». Сохранены действующее лицо — суд — и предположение «могли»; утверждение о безусловной обязанности отменить решение не добавлено. Выше в ответе кота — три образца и ссылки на акты, из которых они взяты.

Прямые вызовы API этой цепочки

Подготовка сессии

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_stats сообщает допустимые размеры текста.

Сквозной пример вычитки.

QR в сносках PDF и DOCX

Кот возвращает QR-код, который удобно вставить в сноску внизу страницы PDF или DOCX. Камера телефона открывает документ по ссылке, записанной в QR.

Карточки практики Верховного Суда Российской Федерации, Конституционного Суда РФ, Пленума Верховного Суда, исторического корпуса Высшего Арбитражного Суда РФ и обзоров Верховного Суда содержат source_url и объект qr. Их возвращают find_term, search_practice, find_by_norm и get_case.

ПолеЗначение
source_urlАдрес документа на сайте суда: PDF или страница с документом.
qr.qr_image_urlАдрес PNG; картинку можно скачать без Bearer-токена.
qr.qr_encodesURL, записанный внутри QR. В этом примере равен source_url.
qr.qr_noteКраткая подпись к QR.

find_term и search_practice возвращают карточки в results[i]; find_by_norm — в corpora[corpus]["документы"][i], где corpus — ключ группы корпуса; get_case — в карточке верхнего уровня. Другие семейства читаются по своим схемам: адрес PNG берите именно из qr.qr_image_url.

Подключите кота

Подключите в ваш агент бесплатный MCP amazingcat («кот») по инструкции. Без подключения агент не сможет обратиться к коту.

Человек пишет агенту

Попроси кота найти практику Верховного Суда по судебным расходам и дать QR на одно подходящее определение для сноски в PDF.

Агент готовит поиск

Агент ищет подборку, а не один заранее известный акт: запрашивает пять карточек. Затем выбирает одну карточку, читает её по doc_id из ответа и берёт ссылку и PNG из полей source_url и qr.

Шаг 1 · find_term

Пять карточек для подбора по теме; doc_id первого подходящего определения находится в results[0].

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

Ответ кота — выбранные поля:

{
  "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 элементов не показаны.

Шаг 2 · get_case

doc_id взят из results[0] выше. Картинка скачивается по qr.qr_image_url; сам QR кодирует qr.qr_encodes.

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

Ответ кота — выбранные поля:

{
  "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 кодирует ссылку на оригинал акта на сайте суда; наведите камеру телефона."
  }
}

Агент отвечает человеку

Для сноски агент скачивает PNG из qr.qr_image_url и вставляет его вместе с подписью «Источник: определение Верховного Суда Российской Федерации», датой, номером и ссылкой source_url. Камера открывает адрес qr.qr_encodes.

Прямые вызовы API этой цепочки

Подготовка сессии

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}}}'

Документ на сайте суда · PNG QR

QR на документ суда
Источник: Определение Верховного Суда Российской Федерации от 02.10.2026 № 305-ЭС26-10137

Прямой вызов API и загрузка PNG

Передайте Bearer и идентификатор сессии из initialize. Разбор JSON/SSE описан в разделе 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'

После разбора ответа берите card["source_url"] для подписи и ссылки, card["qr"]["qr_image_url"] для картинки. Скачайте PNG и вложите его в файл.

Сноска в PDF · HTML для WeasyPrint

Рекомендуемый размер — 24 × 24 мм, с белым полем 2 мм вокруг. Сохраняйте квадратную форму картинки. В этом примере исходный PNG — 148 × 148 px; размер в пикселях зависит от длины URL.

<!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 переносит сноску к низу страницы с её номером. Локальный qr.png попадает внутрь PDF; ссылка в подписи остаётся кликабельной.

Сноска в DOCX

В Word выберите «Ссылки → Вставить сноску». Вставьте скачанный PNG в текст сноски, задайте ширину и высоту 2,4 см, оставьте белое поле и добавьте подпись «Источник: …» со ссылкой на документ.

Для программной генерации скачайте qr_footnote.py, raw.py и qr_requirements.txt. Скрипт делает HTML, PDF и DOCX с настоящей сноской Word и вложенной 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

Готовый пример: PDF · DOCX · HTML · JSON.

Параметры поиска

У kas_search court=1…9 — номер кассационного суда; court=0 — поиск без выбора конкретного суда. У oblsud_* и raysud_* court — код ГАС из *_courts. Для дела задавайте и суд, и номер: номер сам по себе не уникален между судами.

kind=civil — гражданское производство, admin — административный иск по КАС, koap — дело об административном правонарушении. Параметры разных семейств проверяйте по inputSchema. Обозначение «session» внутри аргументов некоторых инструментов не заменяет заголовок Mcp-Session-Id.

query — тематическая формулировка; text и phrase задают текстовый поиск, norms — ссылки на нормы. У kas_search и oblsud_search следующий cursor берётся из page.next_cursor; у raysud_search — из next_cursor на верхнем уровне ответа. Повторяйте запрос с теми же фильтрами и новым cursor. Для law_get_text используйте pagination.next_request, если ответ сообщает truncated.

Имена участников в выдаче кота маскируются; маску сохраняйте как получена. Имена судей могут оставаться открытыми. Источник акта берите из его ответа; QR не следует предполагать у каждого семейства.

Пакетная интеграция

Выгрузить в CSV определения Седьмого кассационного суда общей юрисдикции с упоминанием статьи 112 ГПК РФ за 2023–2025 годы.

batch.py · Python 3.10+, пакет requests. Один процесс; запустите в отдельной папке.

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

Малый прогон: две страницы по десять актов. AMAZINGCAT_MAX_PAGES=2 останавливает демонстрацию после двух страниц; без этой переменной цикл идёт до конца выдачи или паузы по лимиту. Повторный запуск продолжает с сохранённого cursor.

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

Повторный запуск в той же папке:

AMAZINGCAT_MAX_PAGES=2 python batch.py
rows=30 found=236 next_cursor=30
rows=40 found=236 next_cursor=40
  • Считается запрос, а не строка CSV; уведомление initialized тоже расходует лимит.
  • При 429 или Retry-After повторяйте ту же страницу после указанной паузы; долгую паузу скрипт сохраняет для последующего запуска.
  • kas-export.state.json хранит cursor и счёт запросов скрипта за день UTC; kas-export.csv — строки. Сохраняйте оба файла и запускайте с теми же фильтрами.
  • Скрипт выдерживает паузу 1,05 с и останавливается после 300 учитываемых попыток за сутки UTC. Другие обращения с тем же токеном тоже расходуют общую квоту; ответ сервера имеет приоритет.

Справочник инструментов

97 инструментов. JSON · inputSchema.

search_practice

Поиск практики по вопросу, корпусу и норме.

ПараметрТипОбязателенПо умолчанию
querystringда—
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

Подборка актов по норме права.

ПараметрТипОбязателенПо умолчанию
articlestringда—
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

Практика по нескольким нормам.

ПараметрТипОбязателенПо умолчанию
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

Поиск фразы или номера в актах высших судов.

ПараметрТипОбязателенПо умолчанию
phrasestringда—
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

Темы практики Верховного Суда и Пленума.

ПараметрТипОбязателенПо умолчанию
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

Поиск по теме из list_tags.

ПараметрТипОбязателенПо умолчанию
tagstringда—
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

Карточки актов с фильтрами и пагинацией offset.

ПараметрТипОбязателенПо умолчанию
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

Похожие акты по case_id из поискового ответа.

ПараметрТипОбязателенПо умолчанию
case_idintegerда—
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

Карточка и текст акта по doc_id; ссылка на документ и QR.

ПараметрТипОбязателенПо умолчанию
doc_idintegerда—
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

Карточка и текст акта по doc_id.

ПараметрТипОбязателенПо умолчанию
doc_idintegerда—
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

Найти положение цитаты на странице документа.

ПараметрТипОбязателенПо умолчанию
courtstringда—
doc_idintegerда—
quotestringда—
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

Числа актов и индексированных текстов по корпусам.

ПараметрТипОбязателенПо умолчанию
inputSchema · JSON Schema
{
  "properties": {},
  "title": "statsArguments",
  "type": "object"
}

law_find

Найти закон или кодекс по названию и получить его оглавление.

ПараметрТипОбязателенПо умолчанию
querystringда—
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

Статьи и разделы закона; as_of выбирает редакцию на дату.

ПараметрТипОбязателенПо умолчанию
actstringда—
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

Текст нормы в текущей редакции и связанная практика.

ПараметрТипОбязателенПо умолчанию
normsstringда—
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

Даты редакций выбранного закона.

ПараметрТипОбязателенПо умолчанию
actstringда—
inputSchema · JSON Schema
{
  "properties": {
    "act": {
      "title": "Act",
      "type": "string"
    }
  },
  "required": [
    "act"
  ],
  "title": "law_historyArguments",
  "type": "object"
}

law_stats

Числа законов, редакций и статей.

ПараметрТипОбязателенПо умолчанию
inputSchema · JSON Schema
{
  "properties": {},
  "title": "law_statsArguments",
  "type": "object"
}

npa_org_find

Найти орган и его код для фильтра НПА.

ПараметрТипОбязателенПо умолчанию
querystringда—
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

Найти тип документа и его код.

ПараметрТипОбязателенПо умолчанию
querystringда—
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

Числа документов каталога НПА.

ПараметрТипОбязателенПо умолчанию
inputSchema · JSON Schema
{
  "properties": {},
  "title": "npa_catalog_statsArguments",
  "type": "object"
}

npa_originals_text

Текст НПА по original_id из поиска.

ПараметрТипОбязателенПо умолчанию
original_idstringда—
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

Числа загруженных текстов НПА.

ПараметрТипОбязателенПо умолчанию
inputSchema · JSON Schema
{
  "properties": {},
  "title": "npa_originals_statsArguments",
  "type": "object"
}

npa_find

Поиск НПА в банке «Законодательство России».

ПараметрТипОбязателенПо умолчанию
querystringда—
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

Текст НПА по nd, в том числе на дату.

ПараметрТипОбязателенПо умолчанию
ndstringда—
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

Образцы формулировок из актов Верховного Суда и частоты слов для вычитки текста.

ПараметрТипОбязателенПо умолчанию
sentencesarrayда—
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

Размер индекса вычитки и допустимые размеры запроса.

ПараметрТипОбязателенПо умолчанию
inputSchema · JSON Schema
{
  "properties": {},
  "title": "wording_statsArguments",
  "type": "object"
}

kas_stats

Числа актов и допустимые значения фильтров.

ПараметрТипОбязателенПо умолчанию
sessionstring—""
inputSchema · JSON Schema
{
  "properties": {
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    }
  },
  "title": "kas_statsArguments",
  "type": "object"
}

kas_categories

Названия категорий дел для фильтра category.

ПараметрТипОбязателенПо умолчанию
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

Найти судью и judge_id для поиска.

ПараметрТипОбязателенПо умолчанию
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

Найти сторону и ИНН организации для фильтра.

ПараметрТипОбязателенПо умолчанию
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

Сравнить число совпадений нескольких поисковых формулировок.

ПараметрТипОбязателенПо умолчанию
variantsstringда—
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

Акты по статье и зоне её упоминания.

ПараметрТипОбязателенПо умолчанию
codestringда—
articlestringда—
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

Распределение по параметру by с фильтрами из схемы.

ПараметрТипОбязателенПо умолчанию
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

Части нескольких актов по списку act_ids.

ПараметрТипОбязателенПо умолчанию
act_idsstringда—
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

Карточка дела по номеру и суду или идентификатору акта.

ПараметрТипОбязателенПо умолчанию
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

Текст одного акта, выбранная часть или окно.

ПараметрТипОбязателенПо умолчанию
act_idintegerда—
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

Дословное присутствие цитаты в выбранном акте.

ПараметрТипОбязателенПо умолчанию
act_idintegerда—
quotestringда—
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

Текст одного акта, выбранная часть или окно.

ПараметрТипОбязателенПо умолчанию
doc_idstringда—
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_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

Числа актов и допустимые значения фильтров.

ПараметрТипОбязателенПо умолчанию
inputSchema · JSON Schema
{
  "properties": {},
  "title": "arb_statsArguments",
  "type": "object"
}

arb_verify_quote

Дословное присутствие цитаты в выбранном акте.

ПараметрТипОбязателенПо умолчанию
doc_idstringда—
quotestringда—
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

Постоянная ссылка на PDF арбитражного акта и его SHA256.

ПараметрТипОбязателенПо умолчанию
doc_idstringда—
inputSchema · JSON Schema
{
  "properties": {
    "doc_id": {
      "title": "Doc Id",
      "type": "string"
    }
  },
  "required": [
    "doc_id"
  ],
  "title": "arb_pdfArguments",
  "type": "object"
}

arb_by_norm

Акты по статье и зоне её упоминания.

ПараметрТипОбязателенПо умолчанию
codestringда—
articlestringда—
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

Распределение по параметру by с фильтрами из схемы.

ПараметрТипОбязателенПо умолчанию
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

Карточка акта Суда по интеллектуальным правам: исход, стороны, судьи, объект спора, нормы.

ПараметрТипОбязателенПо умолчанию
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

Названия и коды областных и равных им судов.

ПараметрТипОбязателенПо умолчанию
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

Карточка дела по номеру и суду или идентификатору акта.

ПараметрТипОбязателенПо умолчанию
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

Текст одного акта, выбранная часть или окно.

ПараметрТипОбязателенПо умолчанию
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

Акты по статье и зоне её упоминания.

ПараметрТипОбязателенПо умолчанию
codestringда—
articlestringда—
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

Сравнить число совпадений нескольких поисковых формулировок.

ПараметрТипОбязателенПо умолчанию
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

Найти сторону и ИНН организации для фильтра.

ПараметрТипОбязателенПо умолчанию
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

Распределение по параметру by с фильтрами из схемы.

ПараметрТипОбязателенПо умолчанию
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

Числа актов и допустимые значения фильтров.

ПараметрТипОбязателенПо умолчанию
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

Дословное присутствие цитаты в выбранном акте.

ПараметрТипОбязателенПо умолчанию
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

Части нескольких актов по списку act_ids.

ПараметрТипОбязателенПо умолчанию
act_idsstringда—
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

Названия категорий дел для фильтра category.

ПараметрТипОбязателенПо умолчанию
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

Найти судью и judge_id для поиска.

ПараметрТипОбязателенПо умолчанию
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

Связанные производства по УИД дела.

ПараметрТипОбязателенПо умолчанию
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

Районная карточка по суду и номеру, УИД или выбранному акту.

ПараметрТипОбязателенПо умолчанию
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

Текст районного акта по идентификатору из карточки.

ПараметрТипОбязателенПо умолчанию
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

Названия, регионы и коды районных и городских судов; next_cursor продолжает список.

ПараметрТипОбязателенПо умолчанию
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

Акты по статье и зоне её упоминания.

ПараметрТипОбязателенПо умолчанию
codestringда—
articlestringда—
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

Сравнить число совпадений нескольких поисковых формулировок.

ПараметрТипОбязателенПо умолчанию
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

Распределение по параметру by с фильтрами из схемы.

ПараметрТипОбязателенПо умолчанию
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

Найти сторону и её party_id для поиска.

ПараметрТипОбязателенПо умолчанию
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

Найти судью и judge_id для поиска.

ПараметрТипОбязателенПо умолчанию
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

Названия категорий дел для фильтра category.

ПараметрТипОбязателенПо умолчанию
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

Части нескольких актов по списку act_ids.

ПараметрТипОбязателенПо умолчанию
act_idsstringда—
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

Дословное присутствие цитаты в выбранном акте.

ПараметрТипОбязателенПо умолчанию
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

Числа актов и допустимые значения фильтров.

ПараметрТипОбязателенПо умолчанию
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

Акты по статье и зоне её упоминания.

ПараметрТипОбязателенПо умолчанию
lawstringда—
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

Текст одного акта, выбранная часть или окно.

ПараметрТипОбязателенПо умолчанию
act_idstringда—
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

Распределение по параметру by с фильтрами из схемы.

ПараметрТипОбязателенПо умолчанию
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

Числа актов и допустимые значения фильтров.

ПараметрТипОбязателенПо умолчанию
categorystring—"all"
inputSchema · JSON Schema
{
  "properties": {
    "category": {
      "default": "all",
      "title": "Category",
      "type": "string"
    }
  },
  "title": "vs_statsArguments",
  "type": "object"
}

vs_verify_quote

Дословное присутствие цитаты в выбранном акте.

ПараметрТипОбязателенПо умолчанию
act_idstringда—
quotestringда—
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

Ссылки акта на другие акты и ссылки других актов на него.

ПараметрТипОбязателенПо умолчанию
act_idstringда—
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

Акты по статье и зоне её упоминания.

ПараметрТипОбязателенПо умолчанию
lawstringда—
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

Текст одного акта, выбранная часть или окно.

ПараметрТипОбязателенПо умолчанию
act_idstringда—
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

Распределение по параметру by с фильтрами из схемы.

ПараметрТипОбязателенПо умолчанию
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

Числа актов и допустимые значения фильтров.

ПараметрТипОбязателенПо умолчанию
categorystring—"all"
inputSchema · JSON Schema
{
  "properties": {
    "category": {
      "default": "all",
      "title": "Category",
      "type": "string"
    }
  },
  "title": "ks_statsArguments",
  "type": "object"
}

ks_verify_quote

Дословное присутствие цитаты в выбранном акте.

ПараметрТипОбязателенПо умолчанию
act_idstringда—
quotestringда—
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

Ссылки акта на другие акты и ссылки других актов на него.

ПараметрТипОбязателенПо умолчанию
act_idstringда—
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

Числа решений ФАС по годам, органам и типам.

ПараметрТипОбязателенПо умолчанию
sessionstring—""
inputSchema · JSON Schema
{
  "properties": {
    "session": {
      "default": "",
      "title": "Session",
      "type": "string"
    }
  },
  "title": "fas_statsArguments",
  "type": "object"
}

fas_doc

Текст решения ФАС по идентификатору из поиска.

ПараметрТипОбязателенПо умолчанию
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

Проверить дословное присутствие цитаты в решении ФАС.

ПараметрТипОбязателенПо умолчанию
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

Сообщить владельцу кота, что ответ инструмента не соответствует описанию.

ПараметрТипОбязателенПо умолчанию
toolstringда—
expectedstringда—
actualstringда—
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

Статус и решение по своему обращению report_feedback.

ПараметрТипОбязателенПо умолчанию
idinteger—0
inputSchema · JSON Schema
{
  "properties": {
    "id": {
      "default": 0,
      "title": "Id",
      "type": "integer"
    }
  },
  "title": "feedback_statusArguments",
  "type": "object"
}