addrbookFor publishers
← The evidence ledger

Evidence row 567124

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 17431d52-c87b-445c-a124-4c054812d842
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
0a1f1d01db68867c9b77ff573c149c60751eec619cb121f86f2425db811383b0
Leaf
0x7243224ae8eb752644f2a258235ddef1505315331154e38b349bc91e9a29961d

What was observed

{
  "count": 32,
  "tools": [
    {
      "description": "Заметка в память проекта (до ~300 символов; грабли и правки — 600). Пиши по ходу: одно наблюдение — одна заметка. kind: decision — сделанный выбор (полочка «Решения»), fact — как устроено, preference — как любит пользователь, progress — что сделано, pitfall — грабли «симптом → причина → лечение» (полочка «Грабли»), correction — «раньше X, теперь Y». Решение пиши формулой «что решали → выбрали X вместо Y, потому что Z»: ✓ «Очередь задач: Redis вместо Kafka — один инстанс, 200 rps». ✗ «Используем Redis» — следующая сессия переспорит то же самое.",
      "inputSchema": {
        "properties": {
          "kind": {
            "default": "fact",
            "type": "string"
          },
          "project_id": {
            "type": "integer"
          },
          "text": {
            "type": "string"
          }
        },
        "required": [
          "project_id",
          "text"
        ],
        "type": "object"
      },
      "name": "add_note"
    },
    {
      "description": "Поручение следующей сессии агента: хвост из «Осталось», который не успел сделать. Пользователь видит его в мини-аппе, следующая сессия — в list_tasks.",
      "inputSchema": {
        "properties": {
          "project_id": {
            "type": "integer"
          },
          "text": {
            "type": "string"
          }
        },
        "required": [
          "project_id",
          "text"
        ],
        "type": "object"
      },
      "name": "add_task"
    },
    {
      "description": "Архивировать проект: уходит из списка, слот освобождается, данные целы. Зови, когда пользователю нужен слот под новый. Вернуть из архива и удалить проект может только он сам, в мини-аппе.",
      "inputSchema": {
        "properties": {
          "project_id": {
            "type": "integer"
          }
        },
        "required": [
          "project_id"
        ],
        "type": "object"
      },
      "name": "archive_project"
    },
    {
      "description": "Спросить пользователя кнопками в Telegram, когда упёрся в развилку, которую решает он сам («какую БД берём?»). НЕ для мелочей, решаемых здравым смыслом. options — 2–4 коротких варианта (по умолчанию Да/Нет). Молчит — вернётся id для check_confirmation.",
      "inputSchema": {
        "properties": {
          "options": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "question": {
            "type": "string"
          }
        },
        "required": [
          "question"
        ],
        "type": "object"
      },
      "name": "ask_user"
    },
    {
      "description": "Вложение для notify_me: скриншот после правки интерфейса, PDF, лог. В проект не сохраняется, живёт до отправки.",
      "inputSchema": {
        "properties": {
          "filename": {
            "type": "string"
          },
          "size_bytes": {
            "type": "integer"
          }
        },
        "required": [
          "filename",
          "size_bytes"
        ],
        "type": "object"
      },
      "name": "attach_file"
    },
    {
      "description": "Забрать ответ пользователя на вопрос ask_user (если тот вернул id). Зови не чаще раза в минуту-другую.",
      "inputSchema": {
        "properties": {
          "ask_id": {
            "type": "string"
          }
        },
        "required": [
          "ask_id"
        ],
        "type": "object"
      },
      "name": "check_confirmation"
    },
    {
      "description": "Закрыть поручение из list_tasks: result — что сделано (1–2 фразы, до 500 символов, пользователь прочитает это в Telegram). Зови СРАЗУ по факту, не пачкой в конце. Не закрывай то, за что не брался.",
      "inputSchema": {
        "properties": {
          "result": {
            "type": "string"
          },
          "task_id": {
            "type": "string"
          }
        },
        "required": [
          "task_id",
          "result"
        ],
        "type": "object"
      },
      "name": "complete_task"
    },
    {
      "description": "Завести проект в Чипе. Зови по просьбе пользователя — или предложи сам, если работаете над задачей без проекта. Название — по сути задачи, до 60 символов.",
      "inputSchema": {
        "properties": {
          "name": {
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "name": "create_project"
    },
    {
      "description": "Остановить дело или отозвать неподтверждённое. Списано только за сделанные шаги, остаток вернётся.",
      "inputSchema": {
        "properties": {
          "errand_id": {
            "type": "string"
          }
        },
        "required": [
          "errand_id"
        ],
        "type": "object"
      },
      "name": "errand_cancel"
    },
    {
      "description": "Многошаговое дело в фоне (поиск, таблица, отчёт, презентация): план и цена ДО запуска, ничего не списывает. files — имена из list_files. run_at/ready_by — только если срок назвал сам пользователь.",
      "inputSchema": {
        "properties": {
          "files": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "goal": {
            "type": "string"
          },
          "project_id": {
            "default": 0,
            "type": "integer"
          },
          "ready_by": {
            "default": false,
            "type": "boolean"
          },
          "run_at": {
            "default": "",
            "type": "string"
          }
        },
        "required": [
          "goal"
        ],
        "type": "object"
      },
      "name": "errand_plan"
    },
    {
      "description": "Отчёт и файлы готового или остановленного дела. Ссылки временные — скачай сразу.",
      "inputSchema": {
        "properties": {
          "errand_id": {
            "type": "string"
          }
        },
        "required": [
          "errand_id"
        ],
        "type": "object"
      },
      "name": "errand_result"
    },
    {
      "description": "Запустить дело из errand_plan. Решает пользователь: без его автоодобрения для IDE уйдёт кнопка в Telegram или на сайт. max_credits — цена, которую он видел. Платно, кредитами пользователя.",
      "inputSchema": {
        "properties": {
          "errand_id": {
            "type": "string"
          },
          "max_credits": {
            "type": "integer"
          },
          "mode": {
            "enum": [
              "quick",
              "thorough"
            ],
            "type": "string"
          }
        },
        "required": [
          "errand_id",
          "mode",
          "max_credits"
        ],
        "type": "object"
      },
      "name": "errand_start"
    },
    {
      "description": "Ход дела: шаги, потрачено из цены, вопрос к пользователю. Без id — последние дела из IDE. Не чаще раза в минуту.",
      "inputSchema": {
        "properties": {
          "errand_id": {
            "default": "",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "errand_status"
    },
    {
      "description": "Завершить двухфазную загрузку файла: зови ПОСЛЕ того, как curl из ответа upload_project_file отработал успешно.",
      "inputSchema": {
        "properties": {
          "upload_id": {
            "type": "string"
          }
        },
        "required": [
          "upload_id"
        ],
        "type": "object"
      },
      "name": "finalize_upload"
    },
    {
      "description": "Сгенерировать картинку 1024×1024. ПЛАТНО: списывает с баланса пользователя ~3 кредита — зови по его запросу, не «на пробу». С project_id PNG ляжет в файлы проекта, без него — временная ссылка, скачай сразу.",
      "inputSchema": {
        "properties": {
          "project_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "prompt": {
            "type": "string"
          }
        },
        "required": [
          "prompt"
        ],
        "type": "object"
      },
      "name": "generate_image"
    },
    {
      "description": "Контекст проекта: инструкции, поручения, оглавление карты, память, файлы, диалоги. Зови ОДИН раз, когда берёшься за проект впервые; вернулся в знакомый — whats_new, он дешевле. depth: \"brief\" (сводки аннотациями, по умолчанию) или \"full\" (дословно).",
      "inputSchema": {
        "properties": {
          "depth": {
            "default": "",
            "type": "string"
          },
          "project_id": {
            "type": "integer"
          }
        },
        "required": [
          "project_id"
        ],
        "type": "object"
      },
      "name": "get_project_context"
    },
    {
      "description": "Оглавление карты проекта: полочки-статьи с актуальным знанием, которые Чип ведёт по журналу (не лента). Сама статья — read_map_section.",
      "inputSchema": {
        "properties": {
          "project_id": {
            "type": "integer"
          }
        },
        "required": [
          "project_id"
        ],
        "type": "object"
      },
      "name": "get_project_map"
    },
    {
      "description": "Файлы базы знаний проекта: имя, размер, читаемость. Зови перед read_project_file, если точное имя неизвестно.",
      "inputSchema": {
        "properties": {
          "project_id": {
            "type": "integer"
          }
        },
        "required": [
          "project_id"
        ],
        "type": "object"
      },
      "name": "list_files"
    },
    {
      "description": "Проекты пользователя: id, название, последняя активность, открытые поручения. Нужен project_id — сюда; список меняется редко, не перечитывай.",
      "inputSchema": {
        "properties": {},
        "type": "object"
      },
      "name": "list_projects"
    },
    {
      "description": "Поручения тебе в этом проекте: их ставит пользователь и прошлая сессия (add_task, хвосты «Осталось»). Зови в начале работы и когда ищешь, чем заняться дальше. Сделанное закрывай complete_task — незакрытое всплывёт снова.",
      "inputSchema": {
        "properties": {
          "project_id": {
            "type": "integer"
          }
        },
        "required": [
          "project_id"
        ],
        "type": "object"
      },
      "name": "list_tasks"
    },
    {
      "description": "Сообщение пользователю в Telegram: итог долгой задачи («тесты зелёные», «сборка упала»), важное событие. НЕ для болтовни и не для вопросов — вопрос задавай в сессии. До 1000 символов. Показать скриншот, PDF или лог — сначала attach_file, потом сюда upload_id.",
      "inputSchema": {
        "properties": {
          "text": {
            "type": "string"
          },
          "upload_id": {
            "default": "",
            "type": "string"
          }
        },
        "required": [
          "text"
        ],
        "type": "object"
      },
      "name": "notify_me"
    },
    {
      "description": "Журнал проекта дословно, новые сверху: сводки сессий и заметки-вехи. Зови за «что было N сессий назад»; поиск по теме — search_project. offset 0 — свежие, дальше листай по подсказке в конце ответа.",
      "inputSchema": {
        "properties": {
          "offset": {
            "default": 0,
            "type": "integer"
          },
          "project_id": {
            "type": "integer"
          }
        },
        "required": [
          "project_id"
        ],
        "type": "object"
      },
      "name": "read_journal"
    },
    {
      "description": "Статья одной полочки карты — актуальное знание по теме («Решения», «Грабли»…). Зови по оглавлению из get_project_context или get_project_map.",
      "inputSchema": {
        "properties": {
          "project_id": {
            "type": "integer"
          },
          "section": {
            "type": "string"
          }
        },
        "required": [
          "project_id",
          "section"
        ],
        "type": "object"
      },
      "name": "read_map_section"
    },
    {
      "description": "Диалог пользователя с Чипом внутри проекта: сводка и последние реплики. Сценарий: надиктовал план с телефона — забери целиком, а не пересказ. Без session_id — самый свежий; id диалогов в get_project_context.",
      "inputSchema": {
        "properties": {
          "project_id": {
            "type": "integer"
          },
          "session_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          }
        },
        "required": [
          "project_id"
        ],
        "type": "object"
      },
      "name": "read_project_dialog"
    },
    {
      "description": "Текст файла из базы знаний проекта, страницами. Без page у длинного документа придёт оглавление — выбери раздел и позови с page=N; дальше листай по подсказке в конце ответа.",
      "inputSchema": {
        "properties": {
          "filename": {
            "type": "string"
          },
          "page": {
            "default": 0,
            "type": "integer"
          },
          "project_id": {
            "type": "integer"
          }
        },
        "required": [
          "project_id",
          "filename"
        ],
        "type": "object"
      },
      "name": "read_project_file"
    },
    {
      "description": "Переименовать проект (до 60 символов). Только по явной просьбе пользователя.",
      "inputSchema": {
        "properties": {
          "name": {
            "type": "string"
          },
          "project_id": {
            "type": "integer"
          }
        },
        "required": [
          "project_id",
          "name"
        ],
        "type": "object"
      },
      "name": "rename_project"
    },
    {
      "description": "Сводка рабочей сессии — в журнал проекта. Зови В КОНЦЕ сессии или перед долгой паузой, один раз — не дроби. Структура: Сделано → Решения и почему (включая отвергнутые) → Грабли → Осталось. До 6000 символов, на языке пользователя.",
      "inputSchema": {
        "properties": {
          "project_id": {
            "type": "integer"
          },
          "text": {
            "type": "string"
          }
        },
        "required": [
          "project_id",
          "text"
        ],
        "type": "object"
      },
      "name": "save_session_summary"
    },
    {
      "description": "Поиск по знанию проекта: полочки карты, журнал, память, диалоги. Зови за конкретным фактом или старым решением, которого нет в контексте. Без project_id — по всем проектам сразу. Запрос — 1–3 ключевых слова, не предложение. kind сужает память до вида (decision, pitfall, fact, preference, progress, correction); since (ISO, как курсор) режет старое.",
      "inputSchema": {
        "properties": {
          "kind": {
            "default": "",
            "type": "string"
          },
          "project_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "query": {
            "type": "string"
          },
          "since": {
            "default": "",
            "type": "string"
          }
        },
        "required": [
          "query"
        ],
        "type": "object"
      },
      "name": "search_project"
    },
    {
      "description": "Напоминание пользователю в Telegram — для отложенных проверок и дедлайнов. when — ISO-время («2026-07-25T10:00»), без пояса = локальное время пользователя. Текст до 200 символов.",
      "inputSchema": {
        "properties": {
          "text": {
            "type": "string"
          },
          "when": {
            "type": "string"
          }
        },
        "required": [
          "text",
          "when"
        ],
        "type": "object"
      },
      "name": "set_reminder"
    },
    {
      "description": "Выгрузить файл в проект (md, txt, csv, json, pdf, docx, xlsx и др.) — пользователь откроет его с телефона. Зови, когда результат нужен ему в Чипе; код оставляй в репозитории. До ~20k символов — сразу в content, крупнее — укажи size_bytes и загрузи по инструкции из ответа. Картинки — generate_image. ПЛАТНО для многостраничного PDF: оглавление к нему списывает кредиты пользователя.",
      "inputSchema": {
        "properties": {
          "content": {
            "default": "",
            "type": "string"
          },
          "filename": {
            "type": "string"
          },
          "project_id": {
            "type": "integer"
          },
          "size_bytes": {
            "default": 0,
            "type": "integer"
          }
        },
        "required": [
          "project_id",
          "filename"
        ],
        "type": "object"
      },
      "name": "upload_project_file"
    },
    {
      "description": "Изменения в проекте с твоего прошлого захода: журнал, поручения, файлы, полочки карты, диалоги. Зови ПЕРВЫМ, как взялся за проект: в знакомом — только дельта, впервые — сразу полный контекст. Скажет «изменений много» — добери get_project_context. since — из «Курсора» прошлого ответа, session — метка твоей ветки: покажу соседние сессии этого токена.",
      "inputSchema": {
        "properties": {
          "project_id": {
            "type": "integer"
          },
          "session": {
            "default": "",
            "type": "string"
          },
          "since": {
            "default": "",
            "type": "string"
          }
        },
        "required": [
          "project_id"
        ],
        "type": "object"
      },
      "name": "whats_new"
    },
    {
      "description": "Тариф, занятость слотов проектов и (на платном тарифе) остатки дневных лимитов. Зови в начале сессии и когда другой тул отказал по лимиту.",
      "inputSchema": {
        "properties": {},
        "type": "object"
      },
      "name": "whoami"
    }
  ]
}

What the leaf hashes

{"body":"0a1f1d01db68867c9b77ff573c149c60751eec619cb121f86f2425db811383b0","id":567124,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793138607505954,"prev":null,"subject":"17431d52-c87b-445c-a124-4c054812d842","subject_kind":"endpoint"}

Proof

Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (273461 rows).

  1. 0x724365f9f55b6c868409d62d6bdc97dce553afef158847f42e23210c7316018f
  2. 0xfe9cbe759f56f3d69e7f51c6b8df152044fe57a33b2bc1c7cd030d0557e720f2
  3. 0x601ed597a80e03f51216b82cc3365f3c297b964f5a79ae8cb1ee898b5c14af8e
  4. 0x3ca2a191652136432b79e356037178edccee03a221fde2175b81dd146a542cee
  5. 0xdc25345e68c699de8061e1a8985ccc84f3d289735c8966ef11cb1b852ff0a0a0
  6. 0x05bd369d967bdd05f16d620fea67f824a43f1c217e20bca5a469e7d05f156759
  7. 0xc7448934195affc4651e7c59d043dfcdcc30ad61acac3bc94cd99445b85cf7d1
  8. 0x247708d881056efa5f3ad1b8d663f15a54cbfe195d3aaa898872ebc6c3bc4551
  9. 0x620cef3315dc1bfae1aed0304bfac899f8105261659f1b36d31f7fbe4e21389d
  10. 0x7e07aef950a1f04523ad921bae323b1afe6ce5d980427f507591afaeca83c945
  11. 0x36f1c88d0589e24531b7c2fe9c066893e7b891db974b9e8f5e5ebc201c6cf9ef
  12. 0x8a2168d13e43e2c8b0f508ca779f90beef60501499eeab439eb7d23816a97bc4
  13. 0x2926e99aefa0ff2e14a67a3ae10a7f6e753ce4b799c6fe531f8cbf8d33b31a66
  14. 0xb2ae53d841a55a805fb4078b1a7d44e08a81aba4be3690bac3a5b4c366bf39da
  15. 0x275720ecabb68df33eee92ae4fd70572a8d952d6c61c061c2869cfc3217aa5c5
  16. 0x23cf9bb4337ee8be7fcae368fd69d24c62c11fb45882127b4cd919bb96a19996
  17. 0x0e01aa9525097570a6edaf32bfc959de57bf5c24317cf10c0716affea85ca60d
  18. 0xa20d48798a34aba12eb9c7297722982d910f06c148f5e27ac59307422964a585
  19. 0x9fc354c0ea3efc3f1b6548bb77ea902a50f2c9647647ea61592efce2bd795699
Day root
0xdd77e5e99da32c3f154180d63e3c3e6fe11e896a2c6896412ef6b5c4bcf7e795
Chained
0x23bb4dfd09f55c15ac3962f53578e02c6114d5bfd9bb451cf8794fb6e2817ef4
Published
On Arc Testnet, block 69414147: 0xb2ebd83aafeb765a0ce66e76aefb133ed06606c98038fd56191e2bcd1dcb77b4

How to check it · This row as JSON