# three.ws Provenance

Фиксирует действия ИИ-агентов в неизменяемом журнале с подписью кошельком EVM. Нужен для аудита чужих агентов и доказательства авторства операций.

- MCP-сервер · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 249
- Автор: nirholas
- Лицензия: Apache-2.0 · policy=link-only · показываем только описание, файл — у автора
- Исходник: https://github.com/nirholas/three.ws/tree/HEAD/packages/provenance-mcp
- Обновлён: 2026-10-24
- HTML: https://affpapa.org/nevibecode/mcp/threews-provenance

## Что делает

Сервер связывает ИИ-ассистента с реестром three.ws для фиксации событий. Каждое действие заносится в неизменяемый журнал, откуда записи нельзя удалить или отредактировать. При наличии ключа EVM сервер формирует каноническую структуру объекта, считает хеш SHA-256 и подписывает его по стандарту ERC-191. Это позволяет доказать авторство шага математически, а не просто верить агенту на слово.

В набор входят три инструмента. Инструмент `append_agent_action` отправляет новую запись в журнал, причём повторный вызов создаёт новое событие, а не перезаписывает старое. Чтение организовано через `list_agent_actions` с курсорной пагинацией и `query_action` для отдельного ID. Оба инструмента чтения автоматически запускают `ecrecover` и проверяют соответствие адреса подписанта.

Для работы потребуется Node.js версии не ниже 20 и сетевое подключение к `https://three.ws`. Без токена `THREE_WS_TOKEN` ни одна операция не выполнится: реестр изолирует данные по владельцу учётной записи.

## Требования
- Нужно: Node.js (команды через npx)
- Переменные окружения: `THREE_WS_BASE`, `THREE_WS_TIMEOUT_MS`, `THREE_WS_TOKEN`, `THREE_WS_SIGNER_KEY` — это ключи и токены: значения спроси у человека, в репозиторий и общие файлы не записывай.

## Установка

### Claude Code (родная платформа)

**Командой платформы**
```bash
claude mcp add --env THREE_WS_BASE=<THREE_WS_BASE> --env THREE_WS_TIMEOUT_MS=<THREE_WS_TIMEOUT_MS> --env THREE_WS_TOKEN=<THREE_WS_TOKEN> --env THREE_WS_SIGNER_KEY=<THREE_WS_SIGNER_KEY> --transport stdio provenance-mcp -- npx -y @three-ws/provenance-mcp
```
Вместо <…> подставьте свои значения

### Codex

**Командой платформы**
```bash
codex mcp add provenance-mcp --env THREE_WS_BASE=<THREE_WS_BASE> --env THREE_WS_TIMEOUT_MS=<THREE_WS_TIMEOUT_MS> --env THREE_WS_TOKEN=<THREE_WS_TOKEN> --env THREE_WS_SIGNER_KEY=<THREE_WS_SIGNER_KEY> -- npx -y @three-ws/provenance-mcp
```
Вместо <…> подставьте свои значения

### Cursor

**Файл настроек**
Файл `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "provenance-mcp": {
            "command": "npx",
            "args": [
                "-y",
                "@three-ws/provenance-mcp"
            ],
            "env": {
                "THREE_WS_BASE": "<THREE_WS_BASE>",
                "THREE_WS_TIMEOUT_MS": "<THREE_WS_TIMEOUT_MS>",
                "THREE_WS_TOKEN": "<THREE_WS_TOKEN>",
                "THREE_WS_SIGNER_KEY": "<THREE_WS_SIGNER_KEY>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения

### GitHub Copilot

**Файл настроек**
Файл `.vscode/mcp.json`:
```json
{
    "servers": {
        "provenance-mcp": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "@three-ws/provenance-mcp"
            ],
            "env": {
                "THREE_WS_BASE": "<THREE_WS_BASE>",
                "THREE_WS_TIMEOUT_MS": "<THREE_WS_TIMEOUT_MS>",
                "THREE_WS_TOKEN": "<THREE_WS_TOKEN>",
                "THREE_WS_SIGNER_KEY": "<THREE_WS_SIGNER_KEY>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения

### Gemini CLI

**Командой платформы**
```bash
gemini mcp add -e THREE_WS_BASE=<THREE_WS_BASE> -e THREE_WS_TIMEOUT_MS=<THREE_WS_TIMEOUT_MS> -e THREE_WS_TOKEN=<THREE_WS_TOKEN> -e THREE_WS_SIGNER_KEY=<THREE_WS_SIGNER_KEY> provenance-mcp npx -y @three-ws/provenance-mcp
```
Вместо <…> подставьте свои значения

## Когда брать
- зафиксировать выполненное агентом действие с криптографической подписью
- проверить подлинность истории стороннего или форкнутого ассистента
- отследить цепочку событий агента с постраничной пагинацией
- восстановить публичный адрес подписанта через `ecrecover` для аудита

## Примеры запросов агенту
- Проверь через `query_action`, кто подписал действие 10482 у агента `6a7d0f2c-1b3e-4a55-9c88-2d41b0f7e913`.
- Выведи список последних 20 записей для агента `6a7d0f2c-1b3e-4a55-9c88-2d41b0f7e913` через `list_agent_actions`.
- Зафиксируй действие типа `launch` для агента `6a7d0f2c-1b3e-4a55-9c88-2d41b0f7e913` с помощью `append_agent_action`.

## Похожие
- [REA](https://affpapa.org/nevibecode/mcp/rea.md) — MCP-сервер · ★ 386989
- [GitHub](https://affpapa.org/nevibecode/mcp/github.md) — MCP-сервер · ★ 33918
- [Netdata](https://affpapa.org/nevibecode/mcp/netdata.md) — MCP-сервер · ★ 81115
- [browser-use](https://affpapa.org/nevibecode/mcp/browser-use.md) — MCP-сервер · ★ 119160
- [Codebase Memory](https://affpapa.org/nevibecode/mcp/codebase-memory.md) — MCP-сервер · ★ 47392
- [mcp-server](https://affpapa.org/nevibecode/mcp/mcp-server.md) — MCP-сервер · ★ 43872

Из того же набора: [nirholas/three.ws](https://affpapa.org/nevibecode/by/nirholas/three.ws.md) — 43 карточки

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
