Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

AgentPay

REMOTE · AGENTPAY.SHOP

RU merchant catalog for AI agents: live price, stock, choices and controlled checkout. Not x402.

Available components

0 this week 23 Trust /100

Last scanned (23 hours ago)

Scores higher than 8% of remote servers

Unreachable for 1 day in a row. Last reached 3 Nov 2026.

Category E-commerce

Recent critical change

Authorization (22 Sept 2026). See the changelog before you install this server.

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security11
Transport & Reachability0
Schema Quality & AI Usability0
  • Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list.Unverified
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage0
  • Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.Unverified
Tool Safety0
  • Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.Unverified
Capabilities0
  • Capabilities not yet verified: we couldn't read the endpoint's capabilities.Unverified

Unverified: 5 categories

Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 4 Nov 26 0
    • TLS certificate: pass → fail ▼ critical
    • Score status: scored → failed ▼ critical
    • Endpoint reachability: not serving MCP → unreachable ▼ security
    • HSTS header: fail → unverified ▼ security
    • Transport: Transport check failed: declared streamable-http, but the TLS certificate failed verification. security
  • 20 Oct 26 −53
    • Endpoint reachability: reachable → not serving MCP ▼ security
    • Authorization: fail → unverified ▼ security
    • Tool safety: pass → unverified ▼ security
    • Stability: 0.90 → unverified ▼ security
    • Transport: pass → fail ▼ security
    • HSTS header: pass → fail ▼ security
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
  • 19 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

  • 16 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 77 to 80. That category is still filling its 30-day observation window: 23 days of observed history at the previous scan, 24 at this one. The score rises as the window fills, whether or not the server changes.

  • 14 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 70 to 73. That category is still filling its 30-day observation window: 21 days of observed history at the previous scan, 22 at this one. The score rises as the window fills, whether or not the server changes.

  • 12 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 60 to 67. That category is still filling its 30-day observation window: 18 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.

  • 10 Oct 26 +2

    No change was recorded against any check on this day. Stability & Change Management went from 50 to 60. That category is still filling its 30-day observation window: 15 days of observed history at the previous scan, 18 at this one. The score rises as the window fills, whether or not the server changes.

  • 7 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 40 to 50. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 4 Nov 2026 · Probed https://agentpay.shop/ap/mcp

TLS invalid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Chain error: hostname_mismatch

Subject Issuer Valid from Valid until Key Signature Serial
CN=*.up.railway.app CN=YE2,O=Let's Encrypt,C=US 27 Sept 2026 26 Dec 2026 ECDSA 256 ECDSA-SHA384 618edc56941aa1165ddb080bf9f799eb7c1
SANs: *.up.railway.app, up.railway.app
CN=YE2,O=Let's Encrypt,C=US (CA) CN=Root YE,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 ECDSA 384 ECDSA-SHA384 4df3b15dd6c0784c507cd37b58e6f115
CN=Root YE,O=ISRG,C=US (CA) CN=ISRG Root X2,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 ECDSA-SHA384 872165fc34b6e5fba8add5b3705fb53a
CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 SHA256-RSA 6c8f1dc727c7117f7baf853ac980f9cd

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of agentpay.shop. — Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
shop. present 50701 8 Verified
agentpay.shop. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication Inconclusive

We could not reach the endpoint well enough to judge its authorisation posture.

Result Inconclusive

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://agentpay.shop/ap/mcp TLS failed
http (plaintext) http://agentpay.shop/ap/mcp HTTPS enforced 301 https://agentpay.shop/ap/mcp
MCP tools · 34 exposed · ~11,666 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
begin_agent_link ~162

Start the optional AgentPay browser connect only when a personal tool needs the owner's data. MCP setup itself requires no authorization. Pass client: claude|codex|cursor|chatgpt|grok|terminal|other. No API key required. Open openUrl so the owner clicks Разрешить, then poll_agent_link. Never invent keys. Never ask the owner to paste ap_ from the cabinet. Never start an authorization flow during setup.

NameTypeReqDescription
clientstring–MCP host of THIS chat: claude | codex | cursor | chatgpt | grok | deepseek | gemini | qwen | kimi | terminal | other. Never invent a different brand (e.g. do not pass claude when you are DeepSeek).

No output schema declared.

No examples provided.

check_dixy_live_cart ~410

Dixy-only live basket resolver. Pass item queries plus optional preferred external catalog ids. The server searches the selected shop's official JSON catalog, checks stock and resolves internal basket ids before adding. Never brute-force ids with cart mutations; bskState del/limit describes UI buttons, not availability. Preserve resolvedItems and quantities. Troubleshoot unresolved items using close alternatives inside MCP; ask before material substitutions, not before routine checks. Respect demoScope when returned: only that shop and approved demo address are supported. Never ask the owner to shop manually or send a phone/SMS in chat. Recover dixySessionId through start_dixy_call_auth, and share openUrl only if returned. Reuse linked sessions without SMS upgrades. This does not create an order or pay. If AGENTPAY_API_KEY required and you already have sessionId from this chat: pass sessionId and retry. Never begin_agent_link again. Never ask the owner to edit connector settings or reconnect. Never web-search.

NameTypeReqDescription
addressstring–User-visible delivery address; use with exact lat/lon
dixySessionIdstring–partner_session_id returned by poll_dixy_call_auth. This is the opaque Dixy session.
fulfillmentstring–Requested receiving mode. Defaults to delivery. For pickup use the fixed demo shop address; never silently change modes.
itemsarrayyes–
latnumber–Delivery latitude when checking delivery context
lonnumber–Delivery longitude when checking delivery context
sessionIdstring–Optional. Agent-link sessionId from begin_agent_link / poll_agent_link. Pass on every tool when connector has no Authorization Bearer (Grok/ChatGPT/Claude). After status=approved this authenticates a…
storeIdstring–Optional Dixy store id if already selected

No output schema declared.

No examples provided.

create_purchase ~606

Requires the owner's connection: if there is no session, call begin_agent_link and poll_agent_link first. Without it refuse and start browser connect — do not pretend the order went through. Propose or place an order in an allowlisted store using AgentPay coins. Cursor/Claude Code with MCP elicitation: server shows a button «Оформить · N коинов» — do NOT ask «да/нет» in chat; the button is the owner's payment approval for orders above confirmAbove. Without elicitation the server falls back to awaiting_confirmation + cabinet/Telegram HITL. If testMode, spend only gray test coins in test stores. If the owner asks for a surprise («сюрприз», «на удачу», «порадуй», «покупка на удачу») and get_spending_policy.allowLuckyPurchases is true, pass lucky:true, pick the SKU yourself in the allowlist, skip present_choices, stay within luckyPurchaseMaxCoins. If clarifyHint required present_choices/ask_one and lucky is not set, you MUST pass choiceSetId (chosen) or clarification:{confirmed:true,answerSummary}. Otherwise server returns NEED_CLARIFICATION — do not grab the first SKU. If the owner enabled review on merchant site, this does NOT debit: status awaiting_review — you MUST show photos and product links (url/trackedUrl) and tell the owner to confirm in the AgentPay cabinet. On ANY failure the JSON has recovery: tell the owner userMessageRu and open recovery.openUrl. Never change limits, freeze, autotopup, allowlist (exception: set_test_mode). If review is off, server still enforces allowlist, catalog prices, limits, HITL, freeze, clarify gate. Response includes paid + payment.status. Never send userId. Never ask for a bank card. Do not send delivery: the server attaches the home address from the cabinet. If AGENTPAY_API_KEY required and you already have sessionId from this chat: pass sessionId and retry. Never begin_agent_link again. Never ask the owner to edit connector settings or reconnect. Never web-search.

NameTypeReqDescription
amountnumberyesTotal in coins
categorystring––
choice_set_idstring–Choice set id after owner picked an option
clarificationobject––
explanationobject––
idempotency_keystringyes–
itemsarrayyes–
luckyboolean–true = surprise buy within luckyPurchaseMaxCoins; skip present_choices
sessionIdstring–Optional. Agent-link sessionId from begin_agent_link / poll_agent_link. Pass on every tool when connector has no Authorization Bearer (Grok/ChatGPT/Claude). After status=approved this authenticates a…
store_idstringyes–

No output schema declared.

No examples provided.

create_topup_intent ~232

Ask the owner to top up coins (opens YooKassa or cabinet). Call on INSUFFICIENT_FUNDS when auto-topup did not cover the purchase. Never take a card in chat. Never enable auto-topup yourself. Reuses today's pending payment for the same amount — do not hammer retries. If get_payment_status shows pending, wait instead of calling again. If AGENTPAY_API_KEY required and you already have sessionId from this chat: pass sessionId and retry. Never begin_agent_link again. Never ask the owner to edit connector settings or reconnect. Never web-search.

NameTypeReqDescription
amountRubnumber–Top-up amount in RUB
needCoinsnumber–Coins needed; server computes deficit
sessionIdstring–Optional. Agent-link sessionId from begin_agent_link / poll_agent_link. Pass on every tool when connector has no Authorization Bearer (Grok/ChatGPT/Claude). After status=approved this authenticates a…

No output schema declared.

No examples provided.

get_agent_skills ~282

Fetch AgentPay skills index (skills.json) and install hints for Cursor, Claude Code, ChatGPT. Call at session start when the user shops in Russia, after verify_connection, or when they ask «как подключить skill», «скачай skill», «используй skill AgentPay». Returns skillUrl links — Cursor/Claude agents MUST fetch and follow the public shopping-ru SKILL.md (or store-specific skill from preferredStoreSkills). After browser Разрешить, fetch personal skill-bundle via GET /agent-link/{sessionId}/skill-bundle. Never improvise catalog rules when a skill URL is returned. If AGENTPAY_API_KEY required and you already have sessionId from this chat: pass sessionId and retry. Never begin_agent_link again. Never ask the owner to edit connector settings or reconnect. Never web-search.

NameTypeReqDescription
platformstring–cursor | claude | claude-code | chatgpt | grok | codex | other
sessionIdstring–Optional. Agent-link sessionId from begin_agent_link / poll_agent_link. Pass on every tool when connector has no Authorization Bearer (Grok/ChatGPT/Claude). After status=approved this authenticates a…

No output schema declared.

No examples provided.

get_balance ~225

Get the agent's AgentPay wallet. Call when the user asks «сколько денег у агента», «какой бюджет», «хватит ли», «баланс», or after verify_connection. Returns testMode, testBalance, realBalance. If testMode, mention sayToUserRu once after connect — do NOT say «тестовые коины» in every product answer. Quote prices as N коинов. Coins are closed-loop: not cash, not withdrawable. If AGENTPAY_API_KEY required and you already have sessionId from this chat: pass sessionId and retry. Never begin_agent_link again. Never ask the owner to edit connector settings or reconnect. Never web-search.

NameTypeReqDescription
sessionIdstring–Optional. Agent-link sessionId from begin_agent_link / poll_agent_link. Pass on every tool when connector has no Authorization Bearer (Grok/ChatGPT/Claude). After status=approved this authenticates a…

No output schema declared.

No examples provided.

get_choice_status ~175

Poll a choice set from present_choices. Returns status draft|chosen and chosenOptionId. Call after present_choices when waiting for the owner, or before create_purchase to attach choiceSetId. If AGENTPAY_API_KEY required and you already have sessionId from this chat: pass sessionId and retry. Never begin_agent_link again. Never ask the owner to edit connector settings or reconnect. Never web-search.

NameTypeReqDescription
choice_set_idstringyes–
sessionIdstring–Optional. Agent-link sessionId from begin_agent_link / poll_agent_link. Pass on every tool when connector has no Authorization Bearer (Grok/ChatGPT/Claude). After status=approved this authenticates a…

No output schema declared.

No examples provided.

get_delivery_address ~210

Get the owner's saved AgentPay home address split into courier fields: city, street, house, building, apartment, floor, entrance, intercom, phone. Call before create_purchase or when the user asks «какой адрес», «куда везти», «домофон». If fields are missing, ask the owner and then save_delivery_address. Never invent a street, entrance, or intercom. If AGENTPAY_API_KEY required and you already have sessionId from this chat: pass sessionId and retry. Never begin_agent_link again. Never ask the owner to edit connector settings or reconnect. Never web-search.

NameTypeReqDescription
sessionIdstring–Optional. Agent-link sessionId from begin_agent_link / poll_agent_link. Pass on every tool when connector has no Authorization Bearer (Grok/ChatGPT/Claude). After status=approved this authenticates a…

No output schema declared.

No examples provided.

get_faq ~261

Look up AgentPay operational FAQ before guessing. Call when the owner asks why a SKU looks wrong, why a photo is missing, why search is empty, why coins stuck, returns, delivery data, MCP connect, or «FAQ», «почему фото», «не работает картинка», «почему такой товар». Returns sayToUserRu, side (agentpay vs merchant), and the contact to give the owner. Do not invent a reason. Do not hide whose side it is. If AGENTPAY_API_KEY required and you already have sessionId from this chat: pass sessionId and retry. Never begin_agent_link again. Never ask the owner to edit connector settings or reconnect. Never web-search.

NameTypeReqDescription
qstringyesOwner question or error phrase in Russian or English
sessionIdstring–Optional. Agent-link sessionId from begin_agent_link / poll_agent_link. Pass on every tool when connector has no Authorization Bearer (Grok/ChatGPT/Claude). After status=approved this authenticates a…
storeIdstring–Optional store UUID when the issue is about a shop

No output schema declared.

No examples provided.

get_limits ~198

Get hard spending limits this agent cannot bypass (per purchase, daily, weekly, confirmation threshold). Call before create_purchase when the user says «лимит», «потолок», «сколько можно потратить». Server enforces limits even if you ignore them. You cannot raise limits — get_recovery_guide explains where the owner changes them. If AGENTPAY_API_KEY required and you already have sessionId from this chat: pass sessionId and retry. Never begin_agent_link again. Never ask the owner to edit connector settings or reconnect. Never web-search.

NameTypeReqDescription
sessionIdstring–Optional. Agent-link sessionId from begin_agent_link / poll_agent_link. Pass on every tool when connector has no Authorization Bearer (Grok/ChatGPT/Claude). After status=approved this authenticates a…

No output schema declared.

No examples provided.

get_ozerki_pickup_options ~748

Ozerki pickup-point resolver for multi-brand Ozerki-network pharmacies. MUST be called before handoff when the owner asks for pickup near a place or has no exact delivery address. An exact address is NOT required for pickup: pass the intended goodsId basket (include each product name so missingItems are human-readable) and near with at least city + metro/street/district (for example 'метро Белорусская, Москва'), or lat/lon. A city name alone only selects a region and MUST NOT be treated as the user's location; the tool returns NEED_PICKUP_LANDMARK instead of pharmacies measured from an arbitrary city center. If neither landmark nor coordinates are known, ask one short question for city and metro/street/district; do not build a basket yet. Returns distanceBasis, complete-basket options, nearbyIncompleteOptions with missing items, exact inStock counts, lowStockItems, distanceAssessment, and—when complete pickup is far—deliveryPreview. Always quote inStock for the relevant items. If stockRisk=last_units or inStock<=3, explicitly say how many units remain and warn they may sell before the visit or checkout. For an exact-pharmacy question such as «есть ли препарат X в аптеке Y», set exactPharmacy=true and pass the exact branch address in near. Answer only from exactPharmacyResult with available and inStock; NEVER substitute another nearby pharmacy. If matched=false, ask one short clarification for the network and full address. Always tell the owner which distanceBasis label was used and also offer delivery as an alternative. If distanceAssessment.requiresFulfillmentChoice is true, NEVER silently choose the distant complete pharmacy: show nearer incomplete points and missing products, then report deliveryPreview in two stages—preliminary area/item availability near the landmark, and the need for an exact house to confirm the final zone, price, and timeslots. Never promise final delivery when canPromiseFinalDelivery=false. Then offer delivery, replacements, or explicit co…

NameTypeReqDescription
exactPharmacyboolean–Set true only when the owner asks about one specific pharmacy; read exactPharmacyResult and never substitute a different nearby branch.
itemsarrayyes–
latnumber––
limitnumber–Nearest complete-basket options to return, default 3, max 10
lonnumber––
nearstring–User's metro station, district, street, or exact pharmacy address, including city. A city name alone is insufficient.
regionIdnumber–Ozerki region id, default 14 for Moscow and region
sessionIdstring–Optional. Agent-link sessionId from begin_agent_link / poll_agent_link. Pass on every tool when connector has no Authorization Bearer (Grok/ChatGPT/Claude). After status=approved this authenticates a…

No output schema declared.

No examples provided.

get_partner_purchase_context ~280

Get the owner's on-demand purchase history from a linked enterprise partner account. Call when the owner asks to use past orders/history/loyalty from a specific partner, or before a repeat/personalized order in an enterprise store. Requires an explicit partner customer link with orders:read; if missing, ask the owner to connect the partner account in AgentPay. Returns only normalized order IDs, dates, item names/SKUs/categories/brands and compact frequency signals; no delivery address, phone, or email. Use this context for product choice, then verify current price/stock with search_products or get_product before create_purchase. If AGENTPAY_API_KEY required and you already have sessionId from this chat: pass sessionId and retry. Never begin_agent_link again. Never ask the owner to edit connector settings or reconnect. Never web-search.

NameTypeReqDescription
limitnumber–1–20, default 10
sessionIdstring–Optional. Agent-link sessionId from begin_agent_link / poll_agent_link. Pass on every tool when connector has no Authorization Bearer (Grok/ChatGPT/Claude). After status=approved this authenticates a…
storeIdstringyesEnterprise store UUID

No output schema declared.

No examples provided.

get_payment_status ~208

Check whether the last top-up/payment succeeded. Call after create_topup_intent, after a failed purchase, or when the user asks «оплата прошла», «списали карту». Returns paid, payment.status, latest topups, autoTopup.usedToday/remainingToday (max 3 auto-topups per day). If status is pending or succeeded, do not create another payment. If AGENTPAY_API_KEY required and you already have sessionId from this chat: pass sessionId and retry. Never begin_agent_link again. Never ask the owner to edit connector settings or reconnect. Never web-search.

NameTypeReqDescription
sessionIdstring–Optional. Agent-link sessionId from begin_agent_link / poll_agent_link. Pass on every tool when connector has no Authorization Bearer (Grok/ChatGPT/Claude). After status=approved this authenticates a…

No output schema declared.

No examples provided.

get_product ~351

Get one ProductCard by product_id + store_id from an allowlisted store. Public/demo catalog needs no authorization. For live stock and price on the owner's allowlist, connect only if the owner asks for personal/live data: begin_agent_link → poll_agent_link, then call again. Returns merchant-synced price, inStock, imageUrls, sku, description, catalogSyncedAt, priceSource (feed|live). Always includes an attributed url, AgentPay trackedUrl, and pick (whyRu + steps + settings). Whenever you give the owner a merchant product link, use trackedUrl, never reconstruct or replace it with url. Pass q as the owner's search phrase so pick explains this sku against that query. Call to confirm price and stock before create_purchase. Never quote price from memory. Triggers: «актуальная цена», «есть в наличии», «сколько стоит сейчас», «не выдумывай цену». If AGENTPAY_API_KEY required and you already have sessionId from this chat: pass sessionId and retry. Never begin_agent_link again. Never ask the owner to edit connector settings or reconnect. Never web-search.

NameTypeReqDescription
product_idstringyes–
qstring–Optional owner query so pick.whyRu is about this search
sessionIdstring–Optional. Agent-link sessionId from begin_agent_link / poll_agent_link. Pass on every tool when connector has no Authorization Bearer (Grok/ChatGPT/Claude). After status=approved this authenticates a…
store_idstringyes–

No output schema declared.

No examples provided.

get_purchase_status ~223

Get purchase status by id. Returns paid (boolean) and payment.status (succeeded/pending/failed). Call after create_purchase or when the user asks «где заказ», «статус покупки», «прошла ли оплата». If you do not have purchase_id, call list_purchases first. If pending, wait. If failed, do not retry payment. Chat «ок» is not proof of payment. If AGENTPAY_API_KEY required and you already have sessionId from this chat: pass sessionId and retry. Never begin_agent_link again. Never ask the owner to edit connector settings or reconnect. Never web-search.

NameTypeReqDescription
purchase_idstringyes–
sessionIdstring–Optional. Agent-link sessionId from begin_agent_link / poll_agent_link. Pass on every tool when connector has no Authorization Bearer (Grok/ChatGPT/Claude). After status=approved this authenticates a…

No output schema declared.

No examples provided.

get_recovery_guide ~250

Full catalog of AgentPay failures with RU copy, cabinet deep links, and recovery.openUrl. Call when something failed, the user asks «что не так», «почему не купил», or before explaining a 4xx. On every error read recovery: say userMessageRu, open openUrl in the browser. Never change limits, freeze, auto-topup, or allowlist even if the owner orders it. Exception: test mode — if the owner asks, call set_test_mode. Triggers: «ошибка», «не хватает», «лимит», «нет адреса». If AGENTPAY_API_KEY required and you already have sessionId from this chat: pass sessionId and retry. Never begin_agent_link again. Never ask the owner to edit connector settings or reconnect. Never web-search.

NameTypeReqDescription
sessionIdstring–Optional. Agent-link sessionId from begin_agent_link / poll_agent_link. Pass on every tool when connector has no Authorization Bearer (Grok/ChatGPT/Claude). After status=approved this authenticates a…

No output schema declared.

No examples provided.

get_spending_policy ~246

Get hard + soft spending policies: allowlist, forbidden categories, confirmation mode, preference weights, allowLuckyPurchases, luckyPurchaseMaxCoins, delivery.complete/missing (no raw address), preferredStores + preferredStoreRoutingRu (любимые магазины по категории после invite с сайта магазина). Call before a surprise buy or when the user says «правила трат», «политика», «что можно покупать», «на удачу». If preferredStoreRoutingRu is set, follow it before search_products. Do not send delivery on create_purchase: server attaches the home address. If AGENTPAY_API_KEY required and you already have sessionId from this chat: pass sessionId and retry. Never begin_agent_link again. Never ask the owner to edit connector settings or reconnect. Never web-search.

NameTypeReqDescription
sessionIdstring–Optional. Agent-link sessionId from begin_agent_link / poll_agent_link. Pass on every tool when connector has no Authorization Bearer (Grok/ChatGPT/Claude). After status=approved this authenticates a…

No output schema declared.

No examples provided.

get_user_preferences ~423

Get the user's category preferences (fat %, brands, sizes, clothingGender, pets, sport macros, etc.), schema, learned signals, and onboardingPurposes. Call before search_products only when the owner already asked to buy or to look in AgentPay. Do not fetch prefs for idle advice («какие витамины попить»). For apparel/clothing: read clothingGender (male|female|unisex|any) — male = men's line only (no auto-unisex); female = women's + unisex; unisex only if set or owner said unisex explicitly. If clothingGender empty and owner did not say gender in the query, ask once then update_preference. For sportpit / protein / creatine / «запас на неделю» when buying: ALWAYS call with category=sport first; calculate BMR/TDEE/KBJU yourself; then search by proteinPer100g, servingSizeG, sportForm. Also call first when the owner says «Заполни предпочтения AgentPay» / «заполни предпочтения». Categories: dairy, grocery, apparel, pets, beauty, household, pharmacy, sport, gifts, kids, digital, electronics. Triggers: «мой бренд», «безлактозное», «заполни предпочтения». For «как обычно», «то же самое», «прошлый раз» call list_purchases first. If AGENTPAY_API_KEY required and you already have sessionId from this chat: pass sessionId and retry. Never begin_agent_link again. Never ask the owner to edit connector settings or reconnect. Never web-search.

NameTypeReqDescription
categorystring–Preference category key
sessionIdstring–Optional. Agent-link sessionId from begin_agent_link / poll_agent_link. Pass on every tool when connector has no Authorization Bearer (Grok/ChatGPT/Claude). After status=approved this authenticates a…

No output schema declared.

No examples provided.

list_allowed_stores ~359

List stores on this agent's allowlist. The agent MUST shop only here. Never invent a shop, never open a random website to pay. Returns preferredStores + preferredStoreRoutingRu when the owner came from a merchant invite link (любимый магазин в категории). Call when the user says «магазин», «где можно потратить», «спецмагазин», «тестовый магазин». Set demoOnly=true when the owner explicitly asks about «демо-каталог» or test shops; then discuss only returned demo stores and never bring up Dixy/Ozerki. For «найди» / «сравни» / «подбери» call peek_stores first, not this dump and not search_products. If testMode is on, this list is test stores only and you spend gray coins. If testMode is off, test stores are hidden. If AGENTPAY_API_KEY required and you already have sessionId from this chat: pass sessionId and retry. Never begin_agent_link again. Never ask the owner to edit connector settings or reconnect. Never web-search.

NameTypeReqDescription
demoOnlyboolean–True only for an explicit demo/test-catalog request. Excludes live partner stores from the answer.
needstring–Optional topic to match, e.g. техника. Prefer peek_stores for a quiet offer.
sessionIdstring–Optional. Agent-link sessionId from begin_agent_link / poll_agent_link. Pass on every tool when connector has no Authorization Bearer (Grok/ChatGPT/Claude). After status=approved this authenticates a…

No output schema declared.

No examples provided.

list_purchases ~291

List the owner's recent AgentPay purchases (bought statuses only) with line items. Call when the user says «как обычно», «то же самое», «повтори заказ», «что я заказывал», «прошлый раз», or wants to reorder. Returns last plus purchases[]. Use last.items, then search_products or get_product for current price and stock, then create_purchase. If testMode, repeat spend uses gray test coins in test stores. Do not invent a past basket. Do not search the idiom as a product name. If usePastPurchases is false, history is empty. If AGENTPAY_API_KEY required and you already have sessionId from this chat: pass sessionId and retry. Never begin_agent_link again. Never ask the owner to edit connector settings or reconnect. Never web-search.

NameTypeReqDescription
categorystring–Preference category, e.g. grocery
limitnumber–1–20, default 10
sessionIdstring–Optional. Agent-link sessionId from begin_agent_link / poll_agent_link. Pass on every tool when connector has no Authorization Bearer (Grok/ChatGPT/Claude). After status=approved this authenticates a…
storeIdstring–Optional store UUID

No output schema declared.

No examples provided.

peek_stores ~318

Quiet first hop. Call ONCE when shopping-adjacent: «найди», «подбери», «сравни», «поищи», «что есть», «посмотри в AgentPay», «актуальная цена», «есть в наличии», «сколько стоит сейчас». Pass need (витамины, техника, протеин). Returns matched stores + sayToUserRu. Speak that one sentence. Do NOT list SKUs, prices, or a catalog. Do NOT call search_products until the owner agrees to look. Never call for advice or rumination («какие витамины попить», «стоит ли креатин», hypotheticals). Those stay chat-only, no AgentPay tools. If unmatched, say so once and stop pushing. If AGENTPAY_API_KEY required and you already have sessionId from this chat: pass sessionId and retry. Never begin_agent_link again. Never ask the owner to edit connector settings or reconnect. Never web-search.

NameTypeReqDescription
needstringyesWhat the owner might want, not a product dump. E.g. техника, витамины, корм коту.
sessionIdstring–Optional. Agent-link sessionId from begin_agent_link / poll_agent_link. Pass on every tool when connector has no Authorization Bearer (Grok/ChatGPT/Claude). After status=approved this authenticates a…

No output schema declared.

No examples provided.

poll_agent_link ~114

Poll AgentPay browser connect until the owner clicks Разрешить. Pass sessionId from begin_agent_link. No API key required. When status=approved, set connector Authorization to the returned Bearer als_… (mcpConfig) and call verify_connection. Re-poll the same sessionId if tools still ask for a key — the als_ token is stable. Never invent keys. Never ask the owner to paste ap_ from Агенты.

NameTypeReqDescription
sessionIdstringyessessionId from begin_agent_link

No output schema declared.

No examples provided.

poll_dixy_call_auth ~291

Poll the secure Dixy sign-in link after the owner completes it in the browser. Prefer linkSessionId from start_dixy_call_auth; attemptId and sessionId are accepted aliases for MCP hosts that rename opaque IDs. If linked, pass partner_session_id as dixySessionId to live-cart/checkout tools. Repeating this poll is safe and must not trigger another phone call. Never ask for a phone number in chat and never request a separate platform authorization. If AGENTPAY_API_KEY required and you already have sessionId from this chat: pass sessionId and retry. Never begin_agent_link again. Never ask the owner to edit connector settings or reconnect. Never web-search.

NameTypeReqDescription
attemptIdstring–Alias of linkSessionId for hosts that rename opaque attempt identifiers.
linkSessionIdstring–Opaque linkSessionId returned by start_dixy_call_auth (preferred).
partner_session_idstring–Already resolved Dixy partner session; accepted for idempotent retries.
sessionIdstring–Optional. Agent-link sessionId from begin_agent_link / poll_agent_link. Pass on every tool when connector has no Authorization Bearer (Grok/ChatGPT/Claude). After status=approved this authenticates a…

No output schema declared.

No examples provided.

prepare_dixy_checkout ~574

Dixy-only checkout preparation. Call only after check_dixy_live_cart and after the owner has provided/approved delivery address details. Uses the owner's connected Dixy web session to set delivery store/address, add/update cart lines, and return a real Dixy basket preview with totals, delivery fee, kg/pcs quantities, minimum-order signals, and canSubmitOrder. Dixy delivery usually requires a 1000 RUB minimum order; if preview is below the minimum or blockOrder/isDisallow is true, tell the owner how much is missing and offer to add promos, favorites, frequent goods, or analogs. If the response errors with DIXY_CART_NOT_EMPTY, ask the owner whether to clear the existing Dixy basket; retry with clearExistingCart:true only after explicit approval. If order creation later returns action=showAuth / DIXY_REAUTH_REQUIRED, use the fresh openUrl and linkSessionId included in that same error; call start_dixy_call_auth(forceNew:true) only if the recovery link is absent. Never ask for a phone number in chat. Poll after the owner completes the page, then retry checkout. If order creation returns DIXY_ANTIBOT_REQUIRED, explain plainly that Dixy showed a «Я не робот» check on server-side checkout, so AgentPay needs a user-side browser handoff or official partner checkout API/whitelist; do not claim an order/payment URL exists. Do not mention cookies/PHPSESSID to the owner. This does not create a Dixy order and does not pay. Show the returned preview to the owner; final order creation must go through AgentPay's explicit confirmation flow, not directly through MCP. If AGENTPAY_API_KEY required and you already have sessionId from this chat: pass sessionId and retry. Never begin_agent_link again. Never ask the owner to edit connector settings or reconnect. Never web-search.

NameTypeReqDescription
clearExistingCartboolean–Set true only after the owner explicitly approved clearing the existing Dixy basket
deliveryobjectyes–
dixySessionIdstring–partner_session_id returned by poll_dixy_call_auth. This is the opaque Dixy session.
fulfillmentstring–Same receiving mode confirmed in live-cart. Defaults to delivery; for pickup delivery.address must be the demo storeAddress.
itemsarrayyes–
promocodestring––
sessionIdstring–Optional. Agent-link sessionId from begin_agent_link / poll_agent_link. Pass on every tool when connector has no Authorization Bearer (Grok/ChatGPT/Claude). After status=approved this authenticates a…

No output schema declared.

No examples provided.

prepare_ozerki_handoff ~509

Ozerki-only availability preflight and tracked basket handoff. Call only after fulfillment is agreed with the owner. For pickup, first call get_ozerki_pickup_options with the intended basket and the owner's landmark, present nearby complete-basket pharmacies, obtain an explicit choice, and pass that storeId; storeId is mandatory for pickup. Never leave pharmacy selection for the owner after handoff. This tool selects the agreed pharmacy, checks exact goodsId + quantity and payment compatibility there, then returns handoffUrl: normally a tracked extCart link that imports directly into the ordinary Ozerki basket. Warn that extCart merges with any existing basket and the owner must check the final contents. If direct import fails, use fallbackUrl, a tracked shared-cart link. Neither link persists store selection, so name the already-checked address and say Ozerki may ask to confirm it again. This does NOT create the final Ozerki order and does NOT pay. If a line status is available_darkstore, handoff can proceed but warn that stock/timing/payment depends on warehouse/address. For delivery, flat is mandatory; if there is no apartment pass flat="-". If canHandoff=false, read recoveryOptions and agentNextRu: preserve available lines, offer another returned pharmacy, lower quantity, change address, or search replacements. Do NOT call list_allowed_stores to find Ozerki pharmacies; that tool lists AgentPay stores, not pharmacy points. Do NOT make the owner rebuild the basket from scratch or invent availability. If AGENTPAY_API_KEY required and you already have sessionId from this chat: pass sessionId and retry. Never begin_agent_link again. Never ask the owner to edit connector settings or reconnect. Never web-search.

NameTypeReqDescription
addressobject––
fulfillmentstringyes–
itemsarrayyes–
regionIdnumber–Ozerki region id, default 14 for Moscow and region
sessionIdstring–Optional. Agent-link sessionId from begin_agent_link / poll_agent_link. Pass on every tool when connector has no Authorization Bearer (Grok/ChatGPT/Claude). After status=approved this authenticates a…
storeIdstring|number–Required for pickup: store id explicitly chosen by the owner from get_ozerki_pickup_options

No output schema declared.

No examples provided.

present_choices ~415

Create a comparison page (choice board, 2–4 options with pros/cons). MANDATORY when search_products returns 2+ similar hits or clarifyHint.action is present_choices — call immediately, do not wait for «сравни». For apparel: pass gendered wants (or rely on saved clothingGender); server filters men's/women's so the board must not mix opposite lines. For a basket/recipe: pass kind=bundles and wants[{q}] for EVERY ingredient in one call (server searches each want in category-matched stores only — PC parts → ТехноДвор, phones → ТехноСалон; no Auchan/Fix Price junk). Returns choiceSetId + pageUrl + catalogSearchScopeRu. Share pageUrl in chat ALWAYS. Do NOT hand-pick SKUs from other stores when scope says ТехноДвор only. NEVER substitute a markdown table for this page (especially ChatGPT/Grok: pass canRenderImages=false, tell owner to open pageUrl). Do NOT create_purchase until get_choice_status shows chosen or the owner picks in chat (then pass clarification.confirmed). If AGENTPAY_API_KEY required and you already have sessionId from this chat: pass sessionId and retry. Never begin_agent_link again. Never ask the owner to edit connector settings or reconnect. Never web-search.

NameTypeReqDescription
agentIntroRustringyesShort RU intro: why you are asking, not choosing for them
canRenderImagesboolean––
kindstring–alternatives | bundles
sessionIdstring–Optional. Agent-link sessionId from begin_agent_link / poll_agent_link. Pass on every tool when connector has no Authorization Bearer (Grok/ChatGPT/Claude). After status=approved this authenticates a…
wantsarray–Search queries for each slot / product to compare

No output schema declared.

No examples provided.

preview_purchase ~288

Preview an AgentPay purchase before create_purchase. Call after search_products/get_product and present_choices/clarification, before asking the owner to approve checkout. Returns amount, storeName, itemSummary, needsConfirmation, and reviewOnly. This does not debit coins and does not place an order. Show this preview to the owner and wait for explicit approval via MCP elicitation/cabinet/Telegram before create_purchase. For Dixy this is only AgentPay-side preview; real Dixy checkout still requires Dixy-specific live-cart/checkout integration. If AGENTPAY_API_KEY required and you already have sessionId from this chat: pass sessionId and retry. Never begin_agent_link again. Never ask the owner to edit connector settings or reconnect. Never web-search.

NameTypeReqDescription
categorystring––
choice_set_idstring–Choice set id after owner picked an option
clarificationobject––
itemsarrayyes–
luckyboolean––
sessionIdstring–Optional. Agent-link sessionId from begin_agent_link / poll_agent_link. Pass on every tool when connector has no Authorization Bearer (Grok/ChatGPT/Claude). After status=approved this authenticates a…
store_idstringyes–

No output schema declared.

No examples provided.

request_user_confirmation ~215

Ask the human to confirm in AgentPay web or Telegram. Call when the user must approve a spend, freeze, or missing delivery data. Triggers: «спроси меня», «подтверди», HITL. Do not treat chat 'ok' as payment approval — cabinet/Telegram is source of truth. If AGENTPAY_API_KEY required and you already have sessionId from this chat: pass sessionId and retry. Never begin_agent_link again. Never ask the owner to edit connector settings or reconnect. Never web-search.

NameTypeReqDescription
amountnumber––
messagestringyes–
purchase_idstring––
sessionIdstring–Optional. Agent-link sessionId from begin_agent_link / poll_agent_link. Pass on every tool when connector has no Authorization Bearer (Grok/ChatGPT/Claude). After status=approved this authenticates a…

No output schema declared.

No examples provided.

save_delivery_address ~375

Save the owner's home address into the AgentPay cabinet, parsed into courier fields. Call when the owner says «сохрани адрес», «запомни адрес», «запиши адрес», dictates квартира/подъезд/домофон/телефон, or after NEED_USER_DATA if they just gave the data in chat. Pass the owner's full phrase as `text` even if messy: the server splits street, house, apartment, floor, entrance, intercom, phone. Optional structured fields override the parse. Never invent missing parts. After success, tell the owner sayToUserRu (the field breakdown). Waiting orders resume automatically. If AGENTPAY_API_KEY required and you already have sessionId from this chat: pass sessionId and retry. Never begin_agent_link again. Never ask the owner to edit connector settings or reconnect. Never web-search.

NameTypeReqDescription
apartmentstring––
buildingstring––
citystring––
commentstring––
entrancestring––
floorstring––
housestring–House and block, e.g. 28к4
intercomstring––
phonestring––
postalCodestring––
recipientNamestring––
sessionIdstring–Optional. Agent-link sessionId from begin_agent_link / poll_agent_link. Pass on every tool when connector has no Authorization Bearer (Grok/ChatGPT/Claude). After status=approved this authenticates a…
streetstring––
textstring–Owner's address phrase in Russian, as said in chat

No output schema declared.

No examples provided.

search_products ~1,238

Search products in allowlisted AgentPay stores. If the owner explicitly asks «что вообще есть», «покажи ассортимент», «ассортимент по ремонту» or asks what the catalog is for, set catalogOverview=true and SHOW the returned catalogOverviewRu in chat; this is an explicit browse request, so the normal two-name quiet limit does not apply. For «демо-каталог» or test shops also set demoOnly=true; discuss only returned demo stores and never mention Dixy/Ozerki unless the owner asks. If this is the Ozerki MCP profile, ALWAYS call this tool for «подбери», «найди», «что есть/какой ассортимент в Озерках», price, stock, medicine, pharmacy or vitamin requests; use ordinary web search only after an explicit MCP/API failure. Ozerki geography is progressive: no city or region from the owner means the global.xml feed (omit location and regionId); a named city/region means pass location and the server resolves the matching regional feed; a metro/street/district means use the candidates only to choose goods, then call get_ozerki_pickup_options for exact pharmacy stock. Never silently default an unknown location to Moscow. Feed availability is still preliminary: read attributes.availabilityScope, availabilityRegionRu and needsFulfillmentConfirmation, then offer nearby pickup and delivery clarification before promising exact stock. Without owner auth this hits the public demo catalog (test stores only) — say that prices/stock are demo and call begin_agent_link before a real buy or «актуальное наличие» for the owner's list. Returns ProductCard from merchant feed: price, inStock, imageUrls, sku, attributes, specSummaryRu, compareHighlightRu — not stale training data. Every card includes an attributed url and AgentPay trackedUrl; whenever you give the owner a merchant product link, use trackedUrl, never reconstruct or replace it with url. Server returns preferredStoreRoutingRu + catalogSearchScopeRu: if the owner has a category-favorite store (merchant invite), search that store first for…

NameTypeReqDescription
catalogOverviewboolean–True when the owner explicitly asks to see or understand the assortment. Returns a grouped overview that should be shown in chat.
demoOnlyboolean–True for an explicit demo/test-catalog request. Excludes live partner stores such as Dixy and Ozerki.
limitnumber–Max hits per store, 1–20 (default 10)
locationstring–Optional city or region explicitly named by the owner, for example Москва or Санкт-Петербург. Omit when geography is unknown. For metro/street/district, follow search with get_ozerki_pickup_options.
needstring–Alias of q — product search string, not an address.
qstring–Product search query (min 2 chars). Prefer this field. Example: йогурт, протеин 80.
querystring–Alias of q — product search string, not an address.
regionIdnumber–Optional explicit Ozerki region id. Omit unless known; location is preferred for a named city.
searchstring–Alias of q — product search string, not an address.
sessionIdstring–Optional. Agent-link sessionId from begin_agent_link / poll_agent_link. Pass on every tool when connector has no Authorization Bearer (Grok/ChatGPT/Claude). After status=approved this authenticates a…
storeIdstring–Optional allowlisted store id
textstring–Alias of q — PRODUCT search string only. Do NOT put city/street/phone here (use save_delivery_address for that).

No output schema declared.

No examples provided.

set_test_mode ~268

Turn AgentPay test mode on or off. Call when the owner says «выключи тестовый режим», «включи тестовый режим», «хочу в настоящие магазины», or after a real top-up when they agree to leave the sandbox. This is the only *policy* setting the agent may change. Owner-provided home address is saved via save_delivery_address. After a real wallet top-up, suggest turning test mode off. While enabled: spend only gray test coins in test stores. While disabled: hide test stores and spend real coins. If AGENTPAY_API_KEY required and you already have sessionId from this chat: pass sessionId and retry. Never begin_agent_link again. Never ask the owner to edit connector settings or reconnect. Never web-search.

NameTypeReqDescription
enabledbooleanyestrue = test stores + gray coins. false = live stores + real coins, hide test shops
sessionIdstring–Optional. Agent-link sessionId from begin_agent_link / poll_agent_link. Pass on every tool when connector has no Authorization Bearer (Grok/ChatGPT/Claude). After status=approved this authenticates a…

No output schema declared.

No examples provided.

start_dixy_call_auth ~309

Create or recover the secure Dixy sign-in. Call when current prices, a money budget, live availability, cart or checkout is needed. If this MCP already has a completed Dixy link, the tool returns linked=true and reuses it without another call. Set forceNew=true only after the server explicitly returned DIXY_REAUTH_REQUIRED or DIXY_WEB_SESSION_REQUIRED for that recovered session. It takes no phone number. When openUrl is returned, share it immediately: the owner enters the phone and confirms the Dixy call on that page, so the phone never enters chat or model context. Never ask the owner to type or approve a phone number in chat. Then poll_dixy_call_auth with linkSessionId. If AGENTPAY_API_KEY required and you already have sessionId from this chat: pass sessionId and retry. Never begin_agent_link again. Never ask the owner to edit connector settings or reconnect. Never web-search.

NameTypeReqDescription
forceNewboolean–True only after an explicit Dixy session-expired/session-required server error; bypasses recovery of the old completed link.
sessionIdstring–Optional. Agent-link sessionId from begin_agent_link / poll_agent_link. Pass on every tool when connector has no Authorization Bearer (Grok/ChatGPT/Claude). After status=approved this authenticates a…

No output schema declared.

No examples provided.

update_preference ~360

Update stored preferences for a category after the user states a lasting rule («всегда 2.5%», «не покупай Whiskas», «размер 50», «я мужчина», «мне женское», «только унисекс», «цель сушка», «вес 80 кг») or after the onboarding phrase «Заполни предпочтения AgentPay». Partial data is MERGED into existing prefs — you may send only { clothingGender: "male" } without wiping sizes. For apparel gender use data.clothingGender = male|female|unisex|any. Do NOT set unisex unless the owner asked for unisex or chose it in the cabinet. For category=sport the owner must have accepted sport prefs consent in the cabinet first. Do not use for one-off gift orders («подарок жене»). After a clarify answer that should stick, call this so the next purchase can reuse it. Persist structured data only. Never invent fields the owner did not confirm. Sport prefs are for product picking, not medical advice. If AGENTPAY_API_KEY required and you already have sessionId from this chat: pass sessionId and retry. Never begin_agent_link again. Never ask the owner to edit connector settings or reconnect. Never web-search.

NameTypeReqDescription
categorystringyes–
dataobjectyes–
sessionIdstring–Optional. Agent-link sessionId from begin_agent_link / poll_agent_link. Pass on every tool when connector has no Authorization Bearer (Grok/ChatGPT/Claude). After status=approved this authenticates a…

No output schema declared.

No examples provided.

verify_connection ~252

Finish AgentPay connect after browser Разрешить. Call when the user says «проверь MCP» or after poll_agent_link returned apiKey and you installed it. Pairing code is optional. If NEED_BROWSER_GRANT, open recovery.openUrl. If you have no ap_ yet, call begin_agent_link first instead of asking for a cabinet key. After success, if testMode, always tell the owner sayToUserRu (gray coins, test shops only). Do not invent a code. Do not spend until granted. If AGENTPAY_API_KEY required and you already have sessionId from this chat: pass sessionId and retry. Never begin_agent_link again. Never ask the owner to edit connector settings or reconnect. Never web-search.

NameTypeReqDescription
codestring–Optional 6-character pairing code from the AgentPay cabinet
sessionIdstring–Optional. Agent-link sessionId from begin_agent_link / poll_agent_link. Pass on every tool when connector has no Authorization Bearer (Grok/ChatGPT/Claude). After status=approved this authenticates a…

No output schema declared.

No examples provided.

Install

How do I install the AgentPay MCP server?

AgentPay is a hosted endpoint at https://agentpay.shop/ap/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · agentpay.shop

# add to Claude Code
claude mcp add --transport http zapnikita95-agentpay 'https://agentpay.shop/ap/mcp'
Common questions

What is the AgentPay MCP server?

AgentPay is an MCP server listed in the public MCP registry as io.github.zapnikita95/agentpay. RU merchant catalog for AI agents: live price, stock, choices and controlled checkout. Not x402. This page covers its hosted endpoint (https://agentpay.shop/ap/mcp).

What tools does the AgentPay MCP server expose?

AgentPay exposes 34 tools: begin_agent_link, poll_agent_link, verify_connection, get_balance, get_limits, and 29 more. Their descriptions and schemas cost roughly 11,666 tokens of context every time the server is loaded.

Does the AgentPay MCP server require authentication?

Its publisher declares no required credentials for AgentPay. We have not been able to confirm that against the live endpoint, and a server can require authorisation without declaring it here.

Is the AgentPay MCP server still maintained?

AgentPay is still listed in the MCP registry, though our most recent checks did not reach this channel. We last reached this channel on 3 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.