Для ИИ-агентов

Вся доска — одним вызовом инструмента

Каждое объявление об аренде в Дананге, сейчас их 11897, читается машиной: цены, районы, площади и ночные медианы рынка. Ни ключа, ни аккаунта, ни регистрации, ничего скрейпить не надо. Сверх бесплатного лимита вызывающая сторона платит за вызов стейблкоинами, без человека в цепочке.

Попробуйте прямо здесь

Кнопка делает настоящий MCP-вызов из вашего браузера к живому эндпоинту. Ничего не подставлено.

MCP

Один эндпоинт JSON-RPC без состояния. Он принимает initialize от клиентов, которые его присылают, и сессию держать не нужно.

https://helprentdanang.com/mcp/
🤖 Пусть ваш ИИ-агент ищет жильё за вас

Подключите HelpRent к Claude, ChatGPT, Cursor или любому MCP-клиенту. Агент ищет по всем объявлениям Дананга, сравнивает цены и районы и приносит вам ссылки.

Бесплатно каждый день в пределах лимита. Сверх него агент сам платит за вызовы в USDC (x402 в сетях Base, Solana, Arc или Stellar): без аккаунта, карты и ключа.

https://helprentdanang.com/mcp/

Добавить в Cursor Добавить в VS Code

Claude, ChatGPT и другие
  • Claude: Настройки, Коннекторы, Добавить свой коннектор, вставьте адрес выше.
  • ChatGPT: включите режим разработчика в настройках коннекторов, создайте коннектор, вставьте адрес выше.
  • Claude Code: claude mcp add --transport http helprent-danang https://helprentdanang.com/mcp/
  • Любой другой клиент MCP по HTTP: адрес выше, ничего устанавливать не нужно.

Инструментов: 6, все только на чтение. search и fetch нужны коннекторам ChatGPT:

Инструментов записи нет. Ничто здесь не создаёт лид, не сохраняет поиск и не выдаёт контакты — значит, нет вызова, который агент сделал бы от чужого имени и который требовалось бы подтверждать.

Обычный HTTP

Те же данные, если не хочется говорить на MCP. Описание OpenAPI — последней строкой.

Ограничения

100 вызовов в сутки с одного адреса, MCP и REST вместе; подключение и список инструментов по MCP не считаются. Этого хватает на ежедневный поиск агента: поиск и несколько объявлений — это 10–30 вызовов. Массовое чтение каталога — то, за что берётся оплата. Никого не блокируем.

Сверх лимита REST отвечает 402, а MCP отдаёт требование оплаты внутри результата инструмента, оба описаны ниже. Подключение и список инструментов по MCP в лимит не идут. В каждом ответе едет остаток бесплатной квоты, так что потолок не приходится нащупывать ударом:

Ответы отдаются с пятиминутным заголовком кэша. Пожалуйста, соблюдайте его — во многом благодаря этому доступ остаётся бесплатным.

Что в данных

Объявления собираются из публичных постов в Telegram, Facebook и Chợ Tốt, плюс от хостов, которые публикуются здесь напрямую. У каждого есть цена, если её указал первоисточник, район и ссылка на источник. Контакты намеренно не отдаются через API — отправляйте человека на страницу объявления.

Мы доска объявлений, а не посредник. Мы не проверяем владельцев на месте, не держим депозиты и ни за кого не ручаемся. Агент, передающий наши данные человеку, должен передать и это.

За пределами бесплатного лимита

Сверх суточного лимита эндпоинты отвечают 402 с платёжным запросом x402 вместо простого отказа. Оплатите — и тот же запрос пройдёт.

Это x402, платёжный протокол поверх HTTP 402, схема exact. Один запрос на оплату несёт по записи на каждую сеть в массиве accepts, USDC в сетях Base, Solana, Arc, Stellar, и ваш клиент выбирает ту цепь, на которой у него уже есть деньги. Три заголовка, все в виде JSON в base64:

Есть и платный адрес /api/v1/paid/listings/: тот же поиск без бесплатного лимита, поэтому до оплаты он всегда отвечает 402. Именно этот адрес предназначен для каталога x402 Bazaar от Coinbase. Купленные вызовы и токены кредита работают и там.

Через MCP

MCP следует транспорту x402 для MCP, а не кодам HTTP, поэтому обычный MCP-клиент получает результат инструмента, который может прочитать, а не обрыв связи. Сверх лимита tools/call возвращает isError с тем же требованием оплаты в structuredContent и в виде JSON-текста. Подпишите одну запись из accepts и повторите вызов с PaymentPayload в params._meta under the key x402/payment; ответ несёт чек в _meta under x402/payment-response. Оплата заголовком PAYMENT-SIGNATURE на /mcp/ тоже работает.

На Arc оплата идёт через наноплатежи Circle Gateway: один раз положите USDC в Gateway, затем подпишите авторизацию EIP-3009 для контракта GatewayWallet, указанного в записи, со сроком действия не меньше семи суток. На каждый вызов в сеть ничего не отправляется, а PAYMENT-RESPONSE возвращает идентификатор перевода Gateway вместо хеша транзакции.

На Stellar в записи указан контракт USDC (Stellar Asset Contract) как актив и сумма в его семи знаках после запятой. Подпишите Soroban authorization entry для transfer(from, payTo, amount) и пришлите транзакцию в payload; фасилитатор отправит её в сеть и заплатит комиссию, так что нужен USDC, а XLM не нужен.

Обратите внимание: в именах заголовков нет префикса X- — так было в первой версии, и клиент, написанный под неё, вообще не увидит нашего запроса на оплату.

One payment buys 5000 calls, not one — settling on chain per request would put a blockchain write between you and every listing you read.

Купленные вызовы зачисляются на адрес, с которого пришёл запрос, а оплаченный ответ ещё и выдаёт токен кредита: заголовок X-Credit-Token по HTTP или _meta с ключом com.helprentdanang/credit-token по MCP. Присылайте его обратно тем же способом, и остаток вызовов пойдёт за вами на любой адрес. Он показывается один раз и хранится только в виде хеша, так что сохраните его.

Каждый результат инструмента по MCP несёт ваше положение в _meta с ключом com.helprentdanang/allowance: сколько бесплатных вызовов осталось сегодня, сколько оплаченных и когда бесплатный лимит обнулится. Ближе к лимиту результат говорит об этом и словами, для модели.

Что мы принимаем

[
  {
    "scheme": "exact",
    "network": "eip155:8453",
    "amount": "10000",
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "payTo": "0xf68bc1098469356eb57e70db9fed0bb524707132",
    "maxTimeoutSeconds": 60,
    "extra": {
      "name": "USD Coin",
      "version": "2"
    }
  },
  {
    "scheme": "exact",
    "network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
    "amount": "10000",
    "asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
    "payTo": "6J7dpvZu4f3vYcRd3TY7dpjXZSYCRdLVfXkxtv3Ycz3j",
    "maxTimeoutSeconds": 60,
    "extra": {
      "feePayer": "CjNFTjvBhbJJd2B5ePPMHRLx1ELZpa8dwQgGL727eKww"
    }
  },
  {
    "scheme": "exact",
    "network": "eip155:5042",
    "amount": "10000",
    "asset": "0x3600000000000000000000000000000000000000",
    "payTo": "0xf68bc1098469356eb57e70db9fed0bb524707132",
    "maxTimeoutSeconds": 604900,
    "extra": {
      "name": "GatewayWalletBatched",
      "version": "1",
      "verifyingContract": "0x77777777dcc4d5a8b6e418fd04d8997ef11000ee"
    }
  },
  {
    "scheme": "exact",
    "network": "stellar:pubnet",
    "amount": "100000",
    "asset": "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75",
    "payTo": "GB3XVWOCLA6XERF4AXOW5UV6Z534CGP2KFUPNYSXCNNVA57PWAMWYJP7",
    "maxTimeoutSeconds": 60,
    "extra": {
      "areFeesSponsored": true
    }
  }
]

Массив accepts в том виде, в каком его отдаёт 402: он собран той же функцией, поэтому страница не может отстать от самого запроса. Выберите одну запись и оплатите её; запроса достаточно, чтобы заплатить, не читая эту страницу.

Настоящий 402, от начала до конца

# 1. over the free line, no payment attached
curl -i https://helprentdanang.com/mcp/ \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

HTTP/2 402
payment-required: eyJ4NDAyVmVyc2lvbiI6MiwiZXJyb3IiOiJQQVlNRU5U...
cache-control: no-store

# 2. decode the header to see what is being asked for
echo '<that value>' | base64 -d | jq .

# 3. sign what your chosen entry describes (EIP-3009 on Base, a partially
#    signed transaction on Solana, EIP-3009 for Circle Gateway on Arc,
#    a Soroban authorization entry on Stellar), then repeat the SAME request
curl -i https://helprentdanang.com/mcp/ \
  -H 'Content-Type: application/json' \
  -H 'PAYMENT-SIGNATURE: <base64 of your PaymentPayload>' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

HTTP/2 200
payment-response: eyJzdWNjZXNzIjp0cnVlLCJ0cmFuc2FjdGlvbiI6IjB4...

Только чтение, и это решение

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

Контакты не отдаются никогда — ни телефон, ни ссылка на WhatsApp, ни адрес источника, который к ним приведёт, и внутри описания объявления тоже. Агент может прочитать о жилье всё и отправляет своего человека на нашу страницу, чтобы связаться с автором. Та страница ограничена по частоте, пишется в журнал и несёт предупреждение смотреть до оплаты; контакт, выданный через API, приходит без всего этого.

Сохранённый свободный текст считается недоверенным и на выходе: описание объявления — это пост, который написал незнакомый человек, и отдать его сырым значило бы стать доставщиком инъекции в вашего агента.

Chào! Я Мэй — спрашивайте о чём угодно про аренду здесь. EN·VI·RU
Mai Заметили баг? Напишите нам →
Войти — и я запомню, что вы ищете, и на этом устройстве, и на следующем.