К содержанию
Инфорензик

MCP для ИИ-агентов

Платформа отдаёт платные проверки как инструменты MCP: агент сам получает схемы входа, вызывает проверки и читает риск-профиль. Каждый вызов проходит тот же путь, что REST: валидация → списание с баланса организации → выполнение → авто-возврат при ошибке.

Подключение

  • URL
    Значение https://api.inforensic.pro/v2/mcp
  • Транспорт
    Значение MCP Streamable HTTP (JSON-RPC 2.0 поверх POST, ответы — SSE)
  • Авторизация
    Значение X-API-Key: <ключ агента> (можно Authorization: Bearer)
  • Протокол MCP
    Значение 2025-06-18

Ключ — client/organization-scoped: вызовы списываются с баланса организации по цене модуля. Service-ключи без организации списание не проходят.

Протокол вызова

Handshake

# 1) initialize — забрать Mcp-Session-Id из заголовков ответа
curl -si -X POST https://api.inforensic.pro/v2/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "X-API-Key: $CONTEXT_KEY" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"probe","version":"0"}}}'

# 2) initialized, 3) tools/list, 4) tools/call — все с Mcp-Session-Id
curl -s -X POST .../v2/mcp -H "Mcp-Session-Id: $SID" ... \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'

Готовые SDK делают handshake сами — обычно достаточно list_tools / call_tool. Ответ приходит SSE-кадром (data: {…}).

Формат ответа инструмента

content[0].text

{
  "status": "COMPLETED", "success": true,
  "module_name": "compliance.rus.fns_disqualified",
  "data": { "found": false, "total_count": 0, "results": [],
    "risk_profile": { "overall_level": "A_GREEN" } },
  "data_actual_date": "2026-09-27"
}

Ошибки приходят как tool-ошибка (isError = true) с текстом в content[0].text — агент видит причину и может скорректировать вызов. Транспортные ошибки авторизации — HTTP 401.

Инструменты 63

Имя инструмента — ключ модуля с точками, заменёнными на подчёркивания: compliance.rus.fns_disqualified → compliance_rus_fns_disqualified. Схемы входа агент получает сам из inputSchema. Юрисдикция названа вторым сегментом ключа: rus, kaz, blr, uzb, kgz, arm, geo, pol, eu, global.

Комплаенс

Армения

Россия

Узбекистан

Биллинг и лимиты

  • • Каждый вызов списывает стоимость модуля с баланса организации (канал API).
  • • При ошибке выполнения средства возвращаются автоматически (auto-refund).
  • • Недостаток средств — tool-ошибка «Недостаточно средств», без выполнения.
  • • Лимит — 120 вызовов в минуту на ключ; превышение даёт HTTP 429 с заголовком Retry-After. Уважайте его: окно общее для всех подключений агента.

Примеры

Claude Desktop / Claude Code

// mcpServers в конфиге клиента (Claude Desktop, Claude Code и др.)
{
  "mcpServers": {
    "context": {
      "command": "npx",
      "args": [ "mcp-remote", "https://api.inforensic.pro/v2/mcp",
        "--header", "X-API-Key:${CONTEXT_API_KEY}" ],
      "env": { "CONTEXT_API_KEY": "ctx_svc_…" }
    }
  }
}

Python (официальный MCP SDK)

from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client

URL = "https://api.inforensic.pro/v2/mcp"  # ключ агента: org-scoped

async with streamablehttp_client(URL, headers={"X-API-Key": KEY}) as (read, write, _):
    async with ClientSession(read, write) as s:
        await s.initialize()
        res = await s.call_tool("compliance_rus_fns_disqualified", {
            "last_name": "Иванов", "first_name": "Иван", "birth_date": "1990-01-01",
        })
        print(res.content[0].text)  # JSON-конверт CommonResponse

Рекомендации для агента

  • • Читай inputSchema и заполняй required-поля; даты — YYYY-MM-DD.
  • • Ориентируйся на data.found и data.risk_profile.overall_level для решения.
  • • Обрабатывай isError как штатный результат (недоступность источника, капча, лимиты) — это не сбой транспорта; можно повторить позже.
  • • Держи одну сессию на серию вызовов, не переинициализируйся на каждый запрос.
  • • Не логируй ключ и полученные перс. данные вне доверенного контура.