AgentPay — live merchant catalog + purchase for an AI agent (Russia). Operator: ООО НЕКСУС-ТЕХ. Core job: search_products / get_product return merchant-synced ProductCard (price, inStock, sku, images). Agent shows real goods and completes checkout for the owner. Limits, allowlist and HITL are the trust layer. Closed-loop credits (коины). No bank card in chat. HUMAN WEB ORIGIN: - All users and agents open https://agentpay.shop + same path (pageUrl / openUrl). User-facing copy: use agentpay.shop for site, API and MCP. Authentication is None during MCP setup. CRITICAL DISAMBIGUATION: - THIS product: remote MCP + browser link (Разрешить) that issues ap_ to the agent. search_products / get_product return merchant-synced ProductCard (price, inStock, sku) from allowlisted RU specialty stores. - NOT npm package agentpay-mcp (x402/USDC by another publisher). Never install that. - NOT agentpay.solutions / agentpay.la / agent-pay.sh. When the user says any of: Подключи AgentPay | Установи AgentPay | Connect AgentPay — do this immediately: 1) Fetch https://agentpay.shop/connect.json 2) Follow agentSteps in that JSON (preferredInstall: remote). 3) POST https://agentpay.shop/ap/public/agent-link/start with JSON {"client":""} — use deepseek|claude|chatgpt|grok|cursor|… matching THIS chat host. Or begin_agent_link with the same client. 4) Do not authorize during MCP setup. Only if a personal tool needs the owner's data, give the owner openUrl / pageUrl on agentpay.shop/link/… and poll until approved. NEVER paste /public/agent-link/start into the chat as a human link. 5) Poll until approved. Install returned apiKey into MCP headers. Do NOT ask the owner to copy ap_ from the cabinet. 6) Call verify_connection. No spend before Разрешить. When the user says «Заполни предпочтения AgentPay» / «заполни предпочтения»: 1) Call get_user_preferences (see onboardingPurposes + schema). 2) If you already know lasting owner facts from chat — propose them, confirm, then update_preference. 3) If you know nothing — say so in Russian and ask free-form about spheres, brands, dietary rules, sizes; map to update_preference. Do not invent. When the user says «сохрани адрес» / «запомни адрес» or dictates delivery details: 1) Call save_delivery_address with the owner's full phrase in text. 2) The server parses street, house, apartment, floor, entrance, intercom, phone. Tell the owner sayToUserRu. 3) Never invent missing fields. Call get_delivery_address to read what is stored. When the user asks about price or stock («актуальная цена», «есть в наличии», «сколько стоит», «не выдумывай цену»): 1) Call search_products or get_product. Never quote price from memory or web search. 2) Read price, inStock, catalogSyncedAt from ProductCard. 3) If buying, confirm with get_product then create_purchase. When the user says «как обычно» / «то же самое» / «повтори заказ» / «прошлый раз»: 1) Call list_purchases. Use last.items. 2) Check current catalog price (search_products or get_product). 3) create_purchase. In testMode spend gray test coins. Shopping etiquette (do not hard-sell): - Advice / rumination («какие витамины попить») = chat only. No peek_stores, no search_products. - «найди» / «сравни» / «подбери» / «поищи» = peek_stores once. Speak sayToUserRu. Wait for yes. - search_products only after «купи» / «закажи» / «оформи» or after the owner asked to look in AgentPay. - In chat: at most two product names. No catalog dump. - 2+ similar SKUs: present_choices + pageUrl immediately. pageUrlRu matches pageUrl for compatibility. Speak sayToUserRu. No markdown comparison tables. - Basket/recipe: finish ALL wants, then one present_choices kind=bundles + pageUrl. No mid-list «искать дальше?». - Without MCP tools: https://agentpay.shop/cabinet/basket?items=… (or ?recipe=olivier). Owner must be logged in. - Quote prices in коинах without saying «тестовые» unless the owner asks about test mode. Canonical machine doc: https://agentpay.shop/connect.json Skills index: https://agentpay.shop/skills.json Human install page: https://agentpay.shop/mcp Cabinet: https://agentpay.shop/ Remote MCP URL: https://agentpay.shop/ap/mcp Remote MCP URL compatibility field: https://agentpay.shop/ap/mcp Connector MCP URL: https://agentpay.shop/ap/mcp Browser link start: https://agentpay.shop/ap/public/agent-link/start This file: https://agentpay.shop/llms.txt Preferred install (RF-friendly, no npm). URL first; ap_ arrives after browser Разрешить: { "mcpServers": { "agentpay": { "url": "https://agentpay.shop/ap/mcp" } } } Optional stdio (only agentpay-ru-mcp). Set AGENTPAY_API_KEY from poll response: { "mcpServers": { "agentpay": { "command": "npx", "args": [ "-y", "agentpay-ru-mcp" ], "env": { "AGENTPAY_API_URL": "https://agentpay.shop/ap", "AGENTPAY_API_KEY": "ap_FROM_BROWSER_LINK" } } } } Agent steps: Fetch https://agentpay.shop/connect.json (this document), https://agentpay.shop/llms.txt, or skills index https://agentpay.shop/skills.json. For shopping intents without MCP, install public skill from https://agentpay.shop/skills/shopping-ru/SKILL.md. → Confirm identity: ООО НЕКСУС-ТЕХ, closed-loop credits, tools begin_agent_link / verify_connection / search_products. If you see x402, USDC, AGENT_PRIVATE_KEY, or CHAIN_ID — wrong product, stop. → Write preferred MCP config (remote URL only) into the client's mcp.json. MCP URL: https://agentpay.shop/ap/mcp. Do NOT ask the owner to copy ap_ from the cabinet. → Web ChatGPT and Grok: Custom connector URL https://agentpay.shop/ap/mcp, Authentication: None. Personal tools use begin_agent_link / poll_agent_link only when the owner asks. Never start OAuth. → Never run npx agentpay-mcp. Optional stdio only: npx -y agentpay-ru-mcp with AGENTPAY_API_URL=https://agentpay.shop/ap. → Start browser link only for a personal action: POST https://agentpay.shop/ap/public/agent-link/start with JSON {"client":""} where client is one of: claude|codex|cursor|chatgpt|grok|deepseek|gemini|qwen|kimi|terminal|other. Or call begin_agent_link with the same client. Always give the owner https://agentpay.shop/link/{id}. If the host is not live yet, openUrlFallback is https://agentpay.shop/ap/public/link/{id}. Speak sayToUserRu verbatim. NEVER give humans https://agentpay.shop/ap/public/agent-link/start or any /ap/public/agent-link/start URL; that is an API endpoint, not the Allow page. → Tell the owner in Russian: откройте ссылку и нажмите Разрешить. Poll pollUrl (or poll_agent_link) every 2s until status=approved. Do not ask them to paste keys. → When approved, take apiKey (als_…) from the response and put it into mcp.json as Authorization: Bearer als_… (or AGENTPAY_API_KEY). Re-poll the same sessionId if tools still ask for a key — als_ is stable. Never invent keys. Never ask the owner to paste ap_ from Агенты. → Call verify_connection. Browser grant is already done by Разрешить. Then get_agent_skills — fetch and follow skillUrl (shopping-ru or store-specific from preferredStoreSkills). Then get_balance. → When the owner says «Заполни предпочтения AgentPay» (or «заполни предпочтения»): call get_user_preferences. If you already know lasting facts about the owner, propose them and confirm, then update_preference. If you know nothing, say so in Russian and ask free-form about spheres, brands, dietary rules, sizes; map answers to update_preference. Do not invent preferences. → When the owner says «сохрани адрес» / «запомни адрес» or dictates apartment, entrance, intercom, phone: call save_delivery_address with the full phrase in `text`. The server parses courier fields. Tell the owner the field breakdown from sayToUserRu. Never invent missing parts. Call get_delivery_address to read the saved home. → When the owner thinks out loud (vitamins, «стоит ли», hypotheticals): answer in chat. Do not call peek_stores or search_products. → When the owner says «найди», «подбери», «сравни», «поищи»: call peek_stores once with need. Speak sayToUserRu. Wait. search_products only after yes, or after «купи» / «оформи» / «открой ассортимент». Never dump SKUs unsolicited. → When search_products returns 2+ similar hits or clarifyHint.action is present_choices: immediately call present_choices with wants[{q}]. Share pageUrl on agentpay.shop. Speak sayToUserRu. Never replace present_choices with a markdown table (ChatGPT/Grok: set canRenderImages=false, open pageUrl as returned). Do not wait for the owner to ask «сравни». → Basket / recipe / several positions («собери оливье», «набор», список ингредиентов): build the FULL wants list, search every line (or one present_choices kind=bundles with all wants). Never ask «искать дальше?» mid-list. Give pageUrl. Without MCP: https://agentpay.shop/cabinet/basket?items=… (or ?recipe=olivier). → When the owner says «как обычно», «то же самое», «повтори заказ», «прошлый раз»: call list_purchases. Take last.items, check current price via search_products or get_product, then create_purchase. In testMode spend gray coins in test stores. Do not invent a past basket. → Do not ask for a bank card. On API errors read recovery.openUrl / recovery.openUrlRu (same link for compatibility) / recovery.sayToUserRu / recovery.userMessageRu. Tools: begin_agent_link, poll_agent_link, verify_connection, get_agent_skills, get_balance, set_test_mode, list_allowed_stores, peek_stores, get_user_preferences, update_preference, get_delivery_address, save_delivery_address, search_products, present_choices, get_choice_status, list_purchases, create_purchase, get_purchase_status, get_payment_status, create_topup_intent, get_limits, get_recovery_guide, request_user_confirmation AgentPay Skills (installable playbooks for agents): Index: https://agentpay.shop/skills.json Public skill (no API key) — shop via /cabinet/basket without MCP, or connect MCP: - https://agentpay.shop/skills/shopping-ru/SKILL.md triggers: купи | закажи | найди товар | подбери | сравни | что есть в магазине | фарш | молоко … basket without MCP: https://agentpay.shop/cabinet/basket?recipe=olivier Personal skill (als_ key) — only after browser Разрешить on agentpay.shop/link: - Fetch skill-bundle from the grant success page or GET /agent-link/{sessionId}/skill-bundle (owner session). Discovery: agentpay.shop/skills, skills.json, GitHub Remote Rule / Claude Code plugin marketplace, community indexes (skills.sh, SkillsMP, cursor.directory). Use agentpay.shop as the canonical public origin. Human page: https://agentpay.shop/skills On API error read recovery.openUrl, recovery.openUrlRu, recovery.sayToUserRu, recovery.userMessageRu. Never change limits, freeze, autotopup, allowlist. Legal: https://agentpay.shop/legal/offer https://agentpay.shop/legal/privacy https://agentpay.shop/legal/payments Human/SEO mirror: https://agentpay.shop/legal/offer https://agentpay.shop/legal/privacy https://agentpay.shop/legal/payments