{"ok":true,"name":"d3al-partner-mcp","version":"1.0.0","auth":"Authorization: Bearer ckptr_…","tools":["partner_docs","partner_onboard","partner_whoami","partner_catalog","partner_create_store","partner_list_stores","partner_update_store","partner_upsert_offer","partner_list_orders","partner_antifraud","partner_order_signals","partner_balance","partner_get_storefront_snippet","partner_export_storefront"],"tool_defs":[{"name":"partner_docs","description":"Money rules, security notes, and how residual pricing works for reseller mini-stores.","inputSchema":{"type":"object","properties":{}}},{"name":"partner_onboard","description":"Onboard as a D3AL affiliate from this agent (no browser). Pass a unique handle + your EVM payout address. Creates the affiliate if new, or resumes if the EVM matches. Returns a ckptr_ API key ONCE — save it in MCP config then call partner_whoami. Optional referrer handle.","inputSchema":{"type":"object","properties":{"handle":{"type":"string","description":"Desired affiliate handle, 3–30 chars a-z 0-9 _"},"evm_address":{"type":"string","description":"EVM payout address 0x + 40 hex (BEP-20 USDT)"},"referrer":{"type":"string","description":"Optional parent affiliate handle"},"key_name":{"type":"string","description":"Label for the API key, default mcp-agent"}},"required":["handle","evm_address"]}},{"name":"partner_whoami","description":"Return the authenticated partner handle, scopes, and claim balance.","inputSchema":{"type":"object","properties":{}}},{"name":"partner_catalog","description":"List resellable products/plans with wholesale floor, min/max retail (max 20×), and residual model notes.","inputSchema":{"type":"object","properties":{}}},{"name":"partner_create_store","description":"Create a mini-store (slug + name). Returns store_url https://d3al.xyz/s/{slug} and publishable_id for public checkout.","inputSchema":{"type":"object","properties":{"name":{"type":"string"},"slug":{"type":"string","description":"URL slug, e.g. myshop"},"status":{"type":"string","enum":["draft","live"]},"theme":{"type":"object","description":"Storefront theme: primary_color, accent_color, tagline, about, logo_url, telegram, x_handle, mode (auto|light|dark)"}}}},{"name":"partner_list_stores","description":"List stores owned by the partner, including offers.","inputSchema":{"type":"object","properties":{}}},{"name":"partner_update_store","description":"Update store name, status (draft|live|suspended), or theme.","inputSchema":{"type":"object","properties":{"store_id":{"type":"integer"},"name":{"type":"string"},"status":{"type":"string"},"theme":{"type":"object","description":"primary_color, accent_color, tagline, about, logo_url, telegram, x_handle, mode"}},"required":["store_id"]}},{"name":"partner_upsert_offer","description":"Set retail price for a product/plan on a store. Retail must be >= wholesale and <= 20× wholesale. Residual = retail − wholesale credits affiliate balance after paid.","inputSchema":{"type":"object","properties":{"store_id":{"type":"integer"},"product":{"type":"string","description":"x_premium | telegram_premium | google_ai_pro"},"plan_duration":{"type":"string","description":"e.g. 6 months"},"retail_price_usd":{"type":"number"},"active":{"type":"boolean"},"conditions":{"type":"object"}},"required":["store_id","product","plan_duration","retail_price_usd"]}},{"name":"partner_list_orders","description":"List recent orders on your book including fingerprint_id, IP, and device_type (no locker secrets).","inputSchema":{"type":"object","properties":{"limit":{"type":"integer"}}}},{"name":"partner_antifraud","description":"Required anti-fraud + first-party fingerprinting stack for MCP storefronts: 10-minute pay window, device/IP binding, tx-hash anti-snipe. Use this when building a custom storefront.","inputSchema":{"type":"object","properties":{}}},{"name":"partner_order_signals","description":"Fraud signals for one of your orders: fingerprint, IP, device, plus your other orders that share the same fingerprint or IP.","inputSchema":{"type":"object","properties":{"order_id":{"type":"integer"}},"required":["order_id"]}},{"name":"partner_balance","description":"Affiliate claim balance including residual store earnings.","inputSchema":{"type":"object","properties":{}}},{"name":"partner_get_storefront_snippet","description":"Return iframe snippet + hosted URL. Prefer partner_export_storefront to deploy a full separate site.","inputSchema":{"type":"object","properties":{"slug":{"type":"string"},"store_id":{"type":"integer"}}}},{"name":"partner_export_storefront","description":"Export a standalone HTML storefront you can host on any domain (Netlify, Cloudflare Pages, GitHub Pages, VPS). Uses publishable_id only — never the API key. Includes 10-minute pay window + first-party fingerprint.","inputSchema":{"type":"object","properties":{"slug":{"type":"string"},"store_id":{"type":"integer"},"filename":{"type":"string","description":"Suggested file name, default index.html"}}}}],"docs":{"money_model":"residual_only","max_markup_mult":20,"rules":["Buyer pays full retail in crypto to Clickoor wallets (platform-collect).","Platform keeps wholesale (catalog plan price).","Partner residual = retail − wholesale, credited to affiliate claim balance after order is activated/verified.","Ladder/flat referral commission is NOT stacked on residual store orders.","Retail must be between wholesale and wholesale × max_markup_mult.","Never put partner API keys in public storefront JavaScript.","Content locker secrets are never exposed via partner MCP/API.","Fulfillment is always handled by Clickoor.","External storefronts use publishable_id + claim_token only. Checkout has a 10-minute pay window and a first-party device fingerprint."],"mcp":{"url":"https://d3al.xyz/mcp","auth":"Authorization: Bearer ckptr_…","transport":"HTTP JSON-RPC tools/list + tools/call (MCP-compatible tool surface)","llms_txt":"https://d3al.xyz/mcp/llms.txt"},"onboard":{"mcp_tool":"partner_onboard","fields":["handle","evm_address","referrer?","key_name?"],"http":"POST https://d3al.xyz/v2-api.php?action=partner_onboard","panel":"https://d3al.xyz/affiliate/api"},"storefront":"https://d3al.xyz/s/{slug}","deploy":{"hosted":"https://d3al.xyz/s/{slug}","export":"Call partner_export_storefront to get a standalone HTML file you can host on any domain (Netlify, Cloudflare Pages, GitHub Pages, your VPS).","public_api":"https://d3al.xyz/v2-api.php","note":"Exported sites talk to d3al.xyz over CORS. Never embed ckptr_ keys."},"antifraud":{"first_party_only":true,"vendor":"none — no FingerprintJS / third-party beacon","payment_window_seconds":600,"intent_skew_seconds":720,"fingerprint":{"required":true,"field":"fingerprint_id","format":"[A-Za-z0-9_-]{10,128} SHA-256 hex preferred","reject":["","unavailable","error","invalid","null","undefined"],"signals":["canvas 2D toDataURL","WebGL vendor + renderer (unmasked when available)","offline audio render checksum","font presence probe","screen / pixelRatio / colorDepth","timezone + languages","hardwareConcurrency / deviceMemory / maxTouchPoints","storage flags (localStorage, sessionStorage, IndexedDB, cookies)"],"hash":"SHA-256 in the browser; only the hex id is sent","cache":"sessionStorage key d3al_device_fp_v2 (6h)","binding":"Hard-match on submit vs create_payment_intent. Different device is rejected."},"ip_tracking":{"source":"CF-Connecting-IP when present, else REMOTE_ADDR / trusted proxy headers","stored_on":["payment_intents","orders","payment_tx_claims"],"soft_bind":"Same IPv4 /24 or IPv6 /64 allowed. Full IP change allowed only if fingerprint matches (logged). Weak fingerprint + IP change is rejected."},"tx_anti_snipe":{"format":"Reject EVM addresses (0x+40) and merchant addresses as fake hashes","normalize":"EVM lowercase; Solana case-sensitive","sync_verify":"On-chain amount + recipient check when possible","intent_age":"Reject txs confirmed before the payment session started (minus skew)","atomic_claim":"payment_tx_claims UNIQUE on normalized hash — first claim wins globally","orders_unique":"orders.tx_hash unique","claim_token":"Required; SHA-256 stored server-side only"},"checkout_must_send":{"partner_create_checkout_session":["publishable_id","product","plan_duration","username","fingerprint_id","accept_terms"],"partner_submit_order":["claim_token","tx_hash","fingerprint_id","accept_terms","payment_source=partner_store"]},"never":["Do not put ckptr_ API keys in storefront JS","Do not accept checkout without fingerprint_id","Do not reuse an expired claim_token","Do not reuse an old tx hash from before this session","Content locker secrets are never returned to MCP"],"partner_tools":{"partner_antifraud":"This payload","partner_list_orders":"Includes fingerprint_id, ip_address, device_type for your orders","partner_order_signals":"Detail + same-fingerprint siblings on your book only"}}},"documentation_url":"https://d3al.xyz/mcp","json_url":"https://d3al.xyz/mcp?format=json","llms_url":"https://d3al.xyz/mcp/llms.txt"}