Как дать ИИ-агенту кошелек и не остаться с пустым счетом

26 авг 2026
712
103
23
2 недели

Представьте, что вы поручили AI-ассистенту заказать редкую книгу, оплатить сервер или купить билет на конференцию. Скрипт доходит до формы оплаты, а дальше ступор. Отдавать агенту реквизиты основной карты страшно: одна галлюцинация или кривой парсер, и деньги утекут не туда. Заставлять человека вручную заполнять каждый checkout сводит автоматизацию на нет.

Инженеры Stripe выкатили любопытную утилиту под названием link-cli. Она решает эту проблему через кошелек Link, выпуская одноразовые виртуальные карты или токены под конкретную транзакцию только после подтверждения владельцем.

В этой статье разберем, как устроен инструмент, как подключить его к LLM через протокол MCP и какие здесь есть подводные камни.

Как устроен процесс

Вся работа с утилитой построена вокруг сущности spend request (запрос на расход). Агент не лезет в ваш банковский аккаунт и не видит сохраненных карт.

Схема работы простая:

Реклама
  1. Агент анализирует страницу магазина, формирует корзину и собирает параметры заказа.
  2. Через CLI создается запрос на покупку с указанием мерчанта, суммы и детального контекста, зачем вообще совершается трата.
  3. Вам на телефон в приложение Link прилетает пуш с запросом на подтверждение.
  4. После одобрения CLI получает временную виртуальную карту или токен.
  5. Агент вставляет сгенерированные реквизиты в форму оплаты и завершает покупку.
link-cli spend-request create \
  --payment-method-id csmrpd_123 \
  --merchant-name "Stripe Press" \
  --merchant-url "https://press.stripe.com" \
  --context "Покупка книги 'Working in Public' по запросу пользователя через shopping assistant." \
  --amount 3500 \
  --line-item "name:Working in Public,unit_amount:3500,quantity:1" \
  --total "type:total,display_text:Total,amount:3500" \
  --request-approval

Параметр --context здесь не для галочки. Stripe требует подробное описание длиной от 100 символов, чтобы вы точно понимали в пуш-уведомлении, за что именно списываются деньги. На подтверждение дается ровно 10 минут, после чего запрос сгорает.

Форматы учетных данных

Утилита умеет отдавать три типа платежных данных в зависимости от того, где и как агент совершает оплату.

Первый вариант — обычная одноразовая виртуальная карта (PAN). Она подходит для любого интернет-магазина с обычной HTML-формой чекаута, даже если сайт вообще не слышал про Stripe.

Второй вариант — Shared Payment Token (SPT). Это решение для сценариев, где продавец поддерживает Machine Payments Protocol (MPP). Здесь оплата проходит программно по протоколу HTTP 402 без эмуляции ввода данных в браузере.

Третий вариант — Link Pay Token (LPT). Если чекаут работает на Stripe и страница содержит специальный блок для AI-агентов, CLI генерирует токен, привязанный напрямую к аккаунту продавца.

Безопасность логов и работа с MCP

Главная головная боль при работе с платежами в LLM — утечка реквизитов. Если утилита выведет полный номер карты и CVC в stdout, эти данные осядут в контексте модели, системных промптах, логах терминала и транскриптах агента.

Разработчики Stripe обошли это через аргумент --output-file. Команда сохраняет полные данные карты в локальный файл с правами доступа 0600, а в стандартный вывод отдает замаскированный JSON:

link-cli spend-request retrieve lsrq_001 \
  --include card \
  --output-file /tmp/link-card.json \
  --format json

Агент берет путь к файлу, передает его во внутренний браузерный раннер вроде Playwright, а в логах остаются только бренд и последние 4 цифры карты.

Для интеграции с фреймворками вроде Claude Code или Cursor утилиту можно запустить как сервер протокола MCP (Model Context Protocol):

{
  "mcpServers": {
    "link": {
      "command": "npx",
      "args": ["@stripe/link-cli", "--mcp"]
    }
  }
}

Если агент крутится в изолированном контейнере или на удаленном сервере, команда link-cli serve поднимает локальный HTTP-эндпоинт для MCP.

Кстати, для общения с языковыми моделями по умолчанию используется формат toon. Это компактный текстовый вывод без лишнего синтаксического шума JSON, который экономит токены в контекстном окне.

Лимиты и ограничения

Инструмент находится на раннем этапе, поэтому команда Stripe зашила жесткие рамки безопасности:

  • Максимальная сумма одной покупки ограничена 500 долларами (50 000 центов).
  • Дневной лимит расходов составляет те же 500 долларов, месячный потолок — 20 000 долларов.
  • Выпущенная карта или токен активны только 12 часов с момента создания запроса.
  • Одновременно может существовать не больше 10 подтвержденных активных запросов.

Для локальных экспериментов и интеграционных тестов есть флаг --test. Он генерирует тестовые номера карт (например, 4000009990001984) и не списывает реальные средства со счета Link.

# Интерактивный демо-режим без реальных списаний
link-cli demo

Где это применимо

Утилита создана под конкретную нишу: автономные скрипты и ассистенты, которым периодически нужно выполнять транзакции от имени человека.

Типичные сценарии:

  • Персональные агенты для закупки расходников, бронирования билетов или подписок.
  • Автоматическое пополнение баланса в облачных сервисах и сторонних API по достижении лимита.
  • Оплата платных эндпоинтов по протоколу Machine Payments Protocol (HTTP 402).
  • Системы нагрузочного и сквозного тестирования чекаутов в e-commerce.

После попытки списания агент может отправить отчет о результате через link-cli report, указав статус (успех, капча, блокировка Cloudflare или отказ банка). Это помогает собирать статистику сбоев.

Проект link-cli получился узкоспециализированным, но закрывает реальную дыру в безопасности автономных агентов. Вместо того чтобы делиться приватными ключами и реквизитами, разработчик получает контролируемый шлюз с подтверждением каждого шага через смартфон.

Главный минус прямо сейчас: инструмент работает только с американскими аккаунтами Link. Если у вас есть доступ к US Link, протестировать утилиту можно прямо сейчас через npx @stripe/link-cli onboard. Остальным пока остается изучать исходники на TypeScript в репозитории и ждать расширения географии.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.