cobroya 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +231 -0
- package/bin/mcp-server.mjs +2 -0
- package/bin/telegram-bot.mjs +2 -0
- package/dist/actions.d.ts +7 -0
- package/dist/actions.js +74 -0
- package/dist/actions.js.map +1 -0
- package/dist/client.d.ts +10 -0
- package/dist/client.js +49 -0
- package/dist/client.js.map +1 -0
- package/dist/errors.d.ts +10 -0
- package/dist/errors.js +28 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +133 -0
- package/dist/index.js +42 -0
- package/dist/index.js.map +1 -0
- package/dist/landing.d.ts +1 -0
- package/dist/landing.js +256 -0
- package/dist/landing.js.map +1 -0
- package/dist/mcp-server.d.ts +1 -0
- package/dist/mcp-server.js +95 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/schemas.d.ts +258 -0
- package/dist/schemas.js +80 -0
- package/dist/schemas.js.map +1 -0
- package/dist/server.d.ts +1 -0
- package/dist/server.js +181 -0
- package/dist/server.js.map +1 -0
- package/dist/shared/formatting.d.ts +4 -0
- package/dist/shared/formatting.js +51 -0
- package/dist/shared/formatting.js.map +1 -0
- package/dist/telegram-bot.d.ts +3 -0
- package/dist/telegram-bot.js +194 -0
- package/dist/telegram-bot.js.map +1 -0
- package/dist/webhook.d.ts +6 -0
- package/dist/webhook.js +77 -0
- package/dist/webhook.js.map +1 -0
- package/dist/whatsapp/client.d.ts +10 -0
- package/dist/whatsapp/client.js +47 -0
- package/dist/whatsapp/client.js.map +1 -0
- package/dist/whatsapp/handlers.d.ts +11 -0
- package/dist/whatsapp/handlers.js +138 -0
- package/dist/whatsapp/handlers.js.map +1 -0
- package/dist/whatsapp/message-parser.d.ts +33 -0
- package/dist/whatsapp/message-parser.js +44 -0
- package/dist/whatsapp/message-parser.js.map +1 -0
- package/dist/whatsapp/webhook.d.ts +16 -0
- package/dist/whatsapp/webhook.js +70 -0
- package/dist/whatsapp/webhook.js.map +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const landingHTML = "<!DOCTYPE html>\n<html lang=\"es\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>CobroYa \u2014 Cobra por Telegram y WhatsApp con Mercado Pago</title>\n<meta name=\"description\" content=\"Genera links de pago de Mercado Pago desde Telegram y WhatsApp. Sin codigo, sin web, sin complicaciones. Cobra en 10 segundos.\">\n<meta property=\"og:title\" content=\"CobroYa \u2014 Cobra con Mercado Pago en 10 segundos\">\n<meta property=\"og:description\" content=\"Genera links de pago desde Telegram y WhatsApp. Sin web, sin codigo, sin complicaciones.\">\n<meta property=\"og:image\" content=\"https://cobroya.app/og.svg\">\n<meta property=\"og:url\" content=\"https://cobroya.app\">\n<meta property=\"og:type\" content=\"website\">\n<meta property=\"og:site_name\" content=\"CobroYa\">\n<meta name=\"twitter:card\" content=\"summary_large_image\">\n<meta name=\"twitter:title\" content=\"CobroYa \u2014 Cobra con Mercado Pago en 10 segundos\">\n<meta name=\"twitter:description\" content=\"Genera links de pago desde Telegram y WhatsApp. Sin web, sin codigo.\">\n<meta name=\"twitter:image\" content=\"https://cobroya.app/og.svg\">\n<link rel=\"icon\" href=\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>⚡</text></svg>\">\n<style>\n*{margin:0;padding:0;box-sizing:border-box}\n:root{--bg:#09090b;--card:#18181b;--border:#27272a;--text:#fafafa;--muted:#a1a1aa;--accent:#3b82f6;--accent2:#8b5cf6;--green:#22c55e}\nbody{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;background:var(--bg);color:var(--text);line-height:1.6;overflow-x:hidden}\na{color:var(--accent);text-decoration:none}\n\n.container{max-width:1080px;margin:0 auto;padding:0 24px}\n\n/* Nav */\nnav{padding:20px 0;border-bottom:1px solid var(--border)}\nnav .container{display:flex;justify-content:space-between;align-items:center}\n.logo{font-size:1.5rem;font-weight:800;background:linear-gradient(135deg,var(--accent),var(--accent2));-webkit-background-clip:text;-webkit-text-fill-color:transparent}\n.nav-cta{background:var(--accent);color:#fff;padding:10px 24px;border-radius:8px;font-weight:600;font-size:.9rem;transition:opacity .2s}\n.nav-cta:hover{opacity:.85}\n\n/* Hero */\n.hero{padding:100px 0 80px;text-align:center}\n.badge{display:inline-block;padding:6px 16px;border:1px solid var(--border);border-radius:99px;font-size:.8rem;color:var(--muted);margin-bottom:24px}\n.badge span{color:var(--green)}\nh1{font-size:clamp(2.5rem,6vw,4rem);font-weight:800;line-height:1.1;margin-bottom:24px;background:linear-gradient(to bottom,var(--text),var(--muted));-webkit-background-clip:text;-webkit-text-fill-color:transparent}\n.subtitle{font-size:1.25rem;color:var(--muted);max-width:600px;margin:0 auto 40px}\n.hero-ctas{display:flex;gap:16px;justify-content:center;flex-wrap:wrap}\n.btn-primary{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;padding:14px 32px;border-radius:10px;font-weight:700;font-size:1rem;transition:transform .2s,box-shadow .2s}\n.btn-primary:hover{transform:translateY(-2px);box-shadow:0 8px 30px rgba(59,130,246,.3)}\n.btn-secondary{background:var(--card);color:var(--text);padding:14px 32px;border-radius:10px;font-weight:600;font-size:1rem;border:1px solid var(--border);transition:border-color .2s}\n.btn-secondary:hover{border-color:var(--muted)}\n\n/* Demo */\n.demo{padding:60px 0;text-align:center}\n.demo-box{background:var(--card);border:1px solid var(--border);border-radius:16px;max-width:480px;margin:0 auto;padding:32px;text-align:left;font-family:'SF Mono',Monaco,'Cascadia Code',monospace;font-size:.95rem}\n.demo-line{padding:6px 0;display:flex;gap:8px}\n.demo-user{color:var(--accent)}\n.demo-bot{color:var(--green)}\n.demo-link{color:var(--accent2);text-decoration:underline}\n.demo-label{color:var(--muted);font-size:.75rem;margin-bottom:12px;font-family:-apple-system,sans-serif}\n\n/* Features */\n.features{padding:80px 0}\n.features h2{text-align:center;font-size:2rem;margin-bottom:12px}\n.features .sub{text-align:center;color:var(--muted);margin-bottom:48px;font-size:1.1rem}\n.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px}\n.card{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:28px}\n.card-icon{font-size:2rem;margin-bottom:12px}\n.card h3{font-size:1.1rem;margin-bottom:8px}\n.card p{color:var(--muted);font-size:.95rem}\n\n/* How */\n.how{padding:80px 0}\n.how h2{text-align:center;font-size:2rem;margin-bottom:48px}\n.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:24px;counter-reset:step}\n.step{text-align:center;padding:24px}\n.step::before{counter-increment:step;content:counter(step);display:inline-flex;width:48px;height:48px;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;border-radius:50%;font-weight:800;font-size:1.2rem;margin-bottom:16px}\n.step h3{margin-bottom:8px}\n.step p{color:var(--muted);font-size:.9rem}\n\n/* Pricing */\n.pricing{padding:80px 0}\n.pricing h2{text-align:center;font-size:2rem;margin-bottom:12px}\n.pricing .sub{text-align:center;color:var(--muted);margin-bottom:48px;font-size:1.1rem}\n.price-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:24px;max-width:700px;margin:0 auto}\n.price-card{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:32px;text-align:center}\n.price-card.featured{border-color:var(--accent);position:relative}\n.price-card.featured::before{content:\"Popular\";position:absolute;top:-12px;left:50%;transform:translateX(-50%);background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;padding:4px 16px;border-radius:99px;font-size:.75rem;font-weight:700}\n.price{font-size:2.5rem;font-weight:800;margin:16px 0 4px}\n.price span{font-size:1rem;color:var(--muted);font-weight:400}\n.price-desc{color:var(--muted);font-size:.9rem;margin-bottom:24px}\n.price-features{list-style:none;text-align:left;margin-bottom:24px}\n.price-features li{padding:8px 0;font-size:.9rem;color:var(--muted);display:flex;align-items:center;gap:8px}\n.price-features li::before{content:\"\\2713\";color:var(--green);font-weight:700}\n.price-btn{display:block;width:100%;padding:12px;border-radius:10px;font-weight:600;font-size:.95rem;text-align:center;transition:opacity .2s}\n.price-btn.primary{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff}\n.price-btn.secondary{background:var(--bg);color:var(--text);border:1px solid var(--border)}\n\n/* CTA */\n.final-cta{padding:80px 0;text-align:center}\n.final-cta h2{font-size:2.2rem;margin-bottom:16px}\n.final-cta p{color:var(--muted);font-size:1.1rem;margin-bottom:32px}\n\n/* Footer */\nfooter{padding:32px 0;border-top:1px solid var(--border);text-align:center;color:var(--muted);font-size:.85rem}\n\n@media(max-width:640px){\n .hero{padding:60px 0 40px}\n .grid,.steps,.price-cards{grid-template-columns:1fr}\n}\n</style>\n</head>\n<body>\n\n<nav>\n <div class=\"container\">\n <div class=\"logo\">CobroYa</div>\n <a href=\"https://t.me/CobroYa_bot\" class=\"nav-cta\">Probar gratis</a>\n </div>\n</nav>\n\n<section class=\"hero\">\n <div class=\"container\">\n <div class=\"badge\"><span>●</span> Ya disponible en Telegram y WhatsApp</div>\n <h1>Cobra con Mercado Pago<br>en 10 segundos</h1>\n <p class=\"subtitle\">Genera links de pago desde Telegram o WhatsApp. Sin web, sin codigo, sin complicaciones. Escribi un mensaje y listo.</p>\n <div class=\"hero-ctas\">\n <a href=\"https://t.me/CobroYa_bot\" class=\"btn-primary\">Empezar con Telegram</a>\n <a href=\"#como-funciona\" class=\"btn-secondary\">Ver como funciona</a>\n </div>\n </div>\n</section>\n\n<section class=\"demo\">\n <div class=\"container\">\n <div class=\"demo-box\">\n <div class=\"demo-label\">Telegram - @CobroYa_bot</div>\n <div class=\"demo-line\"><span class=\"demo-user\">Tu:</span> /cobrar 5000 Clase de guitarra</div>\n <div class=\"demo-line\"><span class=\"demo-bot\">CobroYa:</span> Link de pago creado!</div>\n <div class=\"demo-line\" style=\"padding-left:24px\"><span class=\"demo-link\">mercadopago.com.ar/checkout/...</span></div>\n <div style=\"border-top:1px solid #27272a;margin:16px 0\"></div>\n <div class=\"demo-line\"><span class=\"demo-bot\">CobroYa:</span> Pago recibido - $5.000</div>\n </div>\n </div>\n</section>\n\n<section class=\"features\" id=\"features\">\n <div class=\"container\">\n <h2>Todo lo que necesitas para cobrar</h2>\n <p class=\"sub\">Sin instalar nada. Sin saber programar. Sin crear una web.</p>\n <div class=\"grid\">\n <div class=\"card\">\n <div class=\"card-icon\">⚡</div>\n <h3>Links de pago al instante</h3>\n <p>Escribi el monto y la descripcion. En 2 segundos tenes un link de Mercado Pago listo para enviar a tu cliente.</p>\n </div>\n <div class=\"card\">\n <div class=\"card-icon\">🔔</div>\n <h3>Notificaciones de pago</h3>\n <p>Te avisamos al instante cuando tu cliente paga. Por Telegram o WhatsApp, donde vos quieras.</p>\n </div>\n <div class=\"card\">\n <div class=\"card-icon\">📈</div>\n <h3>Historial de pagos</h3>\n <p>Consulta tus ultimos pagos, el estado de cada uno, y los datos del pagador. Todo desde el chat.</p>\n </div>\n <div class=\"card\">\n <div class=\"card-icon\">↩</div>\n <h3>Devoluciones faciles</h3>\n <p>Devolucion total o parcial con un solo comando. Sin entrar al panel de Mercado Pago.</p>\n </div>\n <div class=\"card\">\n <div class=\"card-icon\">🔒</div>\n <h3>Seguro</h3>\n <p>Validacion HMAC-SHA256 en webhooks. Control de acceso por chat ID. Tu cuenta protegida.</p>\n </div>\n <div class=\"card\">\n <div class=\"card-icon\">🤖</div>\n <h3>Compatible con AI</h3>\n <p>Conecta con Claude, ChatGPT u otros agentes AI via MCP. Automatiza cobros con inteligencia artificial.</p>\n </div>\n </div>\n </div>\n</section>\n\n<section class=\"how\" id=\"como-funciona\">\n <div class=\"container\">\n <h2>Como funciona</h2>\n <div class=\"steps\">\n <div class=\"step\">\n <h3>Abri el bot</h3>\n <p>Busca @CobroYa_bot en Telegram o escribinos por WhatsApp</p>\n </div>\n <div class=\"step\">\n <h3>Genera tu link</h3>\n <p>Escribi: /cobrar 5000 Clase de guitarra</p>\n </div>\n <div class=\"step\">\n <h3>Envialo a tu cliente</h3>\n <p>Copia el link y compartilo por donde quieras</p>\n </div>\n <div class=\"step\">\n <h3>Recibe tu plata</h3>\n <p>El pago va directo a tu cuenta de Mercado Pago</p>\n </div>\n </div>\n </div>\n</section>\n\n<section class=\"pricing\" id=\"precios\">\n <div class=\"container\">\n <h2>Simple y transparente</h2>\n <p class=\"sub\">Sin sorpresas. Sin comisiones ocultas.</p>\n <div class=\"price-cards\">\n <div class=\"price-card\">\n <h3>Gratis</h3>\n <div class=\"price\">$0 <span>/ mes</span></div>\n <p class=\"price-desc\">Para probar y empezar</p>\n <ul class=\"price-features\">\n <li>Hasta 20 links por mes</li>\n <li>Telegram</li>\n <li>Notificaciones de pago</li>\n <li>Historial de pagos</li>\n </ul>\n <a href=\"https://t.me/CobroYa_bot\" class=\"price-btn secondary\">Empezar gratis</a>\n </div>\n <div class=\"price-card featured\">\n <h3>Pro</h3>\n <div class=\"price\">$4.990 <span>ARS / mes</span></div>\n <p class=\"price-desc\">Para profesionales y negocios</p>\n <ul class=\"price-features\">\n <li>Links ilimitados</li>\n <li>Telegram + WhatsApp</li>\n <li>Notificaciones de pago</li>\n <li>Devoluciones desde el chat</li>\n <li>Soporte prioritario</li>\n </ul>\n <a href=\"https://t.me/CobroYa_bot\" class=\"price-btn primary\">Comenzar ahora</a>\n </div>\n </div>\n </div>\n</section>\n\n<section class=\"final-cta\">\n <div class=\"container\">\n <h2>Empeza a cobrar hoy</h2>\n <p>No necesitas web, no necesitas saber programar.<br>Solo tu Telegram y tu cuenta de Mercado Pago.</p>\n <a href=\"https://t.me/CobroYa_bot\" class=\"btn-primary\">Abrir CobroYa en Telegram</a>\n </div>\n</section>\n\n<footer>\n <div class=\"container\">\n CobroYa — Cobra facil con Mercado Pago · <a href=\"mailto:hola@cobroya.app\">hola@cobroya.app</a>\n </div>\n</footer>\n\n</body>\n</html>";
|
package/dist/landing.js
ADDED
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.landingHTML = void 0;
|
|
4
|
+
exports.landingHTML = `<!DOCTYPE html>
|
|
5
|
+
<html lang="es">
|
|
6
|
+
<head>
|
|
7
|
+
<meta charset="UTF-8">
|
|
8
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
9
|
+
<title>CobroYa — Cobra por Telegram y WhatsApp con Mercado Pago</title>
|
|
10
|
+
<meta name="description" content="Genera links de pago de Mercado Pago desde Telegram y WhatsApp. Sin codigo, sin web, sin complicaciones. Cobra en 10 segundos.">
|
|
11
|
+
<meta property="og:title" content="CobroYa — Cobra con Mercado Pago en 10 segundos">
|
|
12
|
+
<meta property="og:description" content="Genera links de pago desde Telegram y WhatsApp. Sin web, sin codigo, sin complicaciones.">
|
|
13
|
+
<meta property="og:image" content="https://cobroya.app/og.svg">
|
|
14
|
+
<meta property="og:url" content="https://cobroya.app">
|
|
15
|
+
<meta property="og:type" content="website">
|
|
16
|
+
<meta property="og:site_name" content="CobroYa">
|
|
17
|
+
<meta name="twitter:card" content="summary_large_image">
|
|
18
|
+
<meta name="twitter:title" content="CobroYa — Cobra con Mercado Pago en 10 segundos">
|
|
19
|
+
<meta name="twitter:description" content="Genera links de pago desde Telegram y WhatsApp. Sin web, sin codigo.">
|
|
20
|
+
<meta name="twitter:image" content="https://cobroya.app/og.svg">
|
|
21
|
+
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>⚡</text></svg>">
|
|
22
|
+
<style>
|
|
23
|
+
*{margin:0;padding:0;box-sizing:border-box}
|
|
24
|
+
:root{--bg:#09090b;--card:#18181b;--border:#27272a;--text:#fafafa;--muted:#a1a1aa;--accent:#3b82f6;--accent2:#8b5cf6;--green:#22c55e}
|
|
25
|
+
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;background:var(--bg);color:var(--text);line-height:1.6;overflow-x:hidden}
|
|
26
|
+
a{color:var(--accent);text-decoration:none}
|
|
27
|
+
|
|
28
|
+
.container{max-width:1080px;margin:0 auto;padding:0 24px}
|
|
29
|
+
|
|
30
|
+
/* Nav */
|
|
31
|
+
nav{padding:20px 0;border-bottom:1px solid var(--border)}
|
|
32
|
+
nav .container{display:flex;justify-content:space-between;align-items:center}
|
|
33
|
+
.logo{font-size:1.5rem;font-weight:800;background:linear-gradient(135deg,var(--accent),var(--accent2));-webkit-background-clip:text;-webkit-text-fill-color:transparent}
|
|
34
|
+
.nav-cta{background:var(--accent);color:#fff;padding:10px 24px;border-radius:8px;font-weight:600;font-size:.9rem;transition:opacity .2s}
|
|
35
|
+
.nav-cta:hover{opacity:.85}
|
|
36
|
+
|
|
37
|
+
/* Hero */
|
|
38
|
+
.hero{padding:100px 0 80px;text-align:center}
|
|
39
|
+
.badge{display:inline-block;padding:6px 16px;border:1px solid var(--border);border-radius:99px;font-size:.8rem;color:var(--muted);margin-bottom:24px}
|
|
40
|
+
.badge span{color:var(--green)}
|
|
41
|
+
h1{font-size:clamp(2.5rem,6vw,4rem);font-weight:800;line-height:1.1;margin-bottom:24px;background:linear-gradient(to bottom,var(--text),var(--muted));-webkit-background-clip:text;-webkit-text-fill-color:transparent}
|
|
42
|
+
.subtitle{font-size:1.25rem;color:var(--muted);max-width:600px;margin:0 auto 40px}
|
|
43
|
+
.hero-ctas{display:flex;gap:16px;justify-content:center;flex-wrap:wrap}
|
|
44
|
+
.btn-primary{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;padding:14px 32px;border-radius:10px;font-weight:700;font-size:1rem;transition:transform .2s,box-shadow .2s}
|
|
45
|
+
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 8px 30px rgba(59,130,246,.3)}
|
|
46
|
+
.btn-secondary{background:var(--card);color:var(--text);padding:14px 32px;border-radius:10px;font-weight:600;font-size:1rem;border:1px solid var(--border);transition:border-color .2s}
|
|
47
|
+
.btn-secondary:hover{border-color:var(--muted)}
|
|
48
|
+
|
|
49
|
+
/* Demo */
|
|
50
|
+
.demo{padding:60px 0;text-align:center}
|
|
51
|
+
.demo-box{background:var(--card);border:1px solid var(--border);border-radius:16px;max-width:480px;margin:0 auto;padding:32px;text-align:left;font-family:'SF Mono',Monaco,'Cascadia Code',monospace;font-size:.95rem}
|
|
52
|
+
.demo-line{padding:6px 0;display:flex;gap:8px}
|
|
53
|
+
.demo-user{color:var(--accent)}
|
|
54
|
+
.demo-bot{color:var(--green)}
|
|
55
|
+
.demo-link{color:var(--accent2);text-decoration:underline}
|
|
56
|
+
.demo-label{color:var(--muted);font-size:.75rem;margin-bottom:12px;font-family:-apple-system,sans-serif}
|
|
57
|
+
|
|
58
|
+
/* Features */
|
|
59
|
+
.features{padding:80px 0}
|
|
60
|
+
.features h2{text-align:center;font-size:2rem;margin-bottom:12px}
|
|
61
|
+
.features .sub{text-align:center;color:var(--muted);margin-bottom:48px;font-size:1.1rem}
|
|
62
|
+
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px}
|
|
63
|
+
.card{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:28px}
|
|
64
|
+
.card-icon{font-size:2rem;margin-bottom:12px}
|
|
65
|
+
.card h3{font-size:1.1rem;margin-bottom:8px}
|
|
66
|
+
.card p{color:var(--muted);font-size:.95rem}
|
|
67
|
+
|
|
68
|
+
/* How */
|
|
69
|
+
.how{padding:80px 0}
|
|
70
|
+
.how h2{text-align:center;font-size:2rem;margin-bottom:48px}
|
|
71
|
+
.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:24px;counter-reset:step}
|
|
72
|
+
.step{text-align:center;padding:24px}
|
|
73
|
+
.step::before{counter-increment:step;content:counter(step);display:inline-flex;width:48px;height:48px;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;border-radius:50%;font-weight:800;font-size:1.2rem;margin-bottom:16px}
|
|
74
|
+
.step h3{margin-bottom:8px}
|
|
75
|
+
.step p{color:var(--muted);font-size:.9rem}
|
|
76
|
+
|
|
77
|
+
/* Pricing */
|
|
78
|
+
.pricing{padding:80px 0}
|
|
79
|
+
.pricing h2{text-align:center;font-size:2rem;margin-bottom:12px}
|
|
80
|
+
.pricing .sub{text-align:center;color:var(--muted);margin-bottom:48px;font-size:1.1rem}
|
|
81
|
+
.price-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:24px;max-width:700px;margin:0 auto}
|
|
82
|
+
.price-card{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:32px;text-align:center}
|
|
83
|
+
.price-card.featured{border-color:var(--accent);position:relative}
|
|
84
|
+
.price-card.featured::before{content:"Popular";position:absolute;top:-12px;left:50%;transform:translateX(-50%);background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;padding:4px 16px;border-radius:99px;font-size:.75rem;font-weight:700}
|
|
85
|
+
.price{font-size:2.5rem;font-weight:800;margin:16px 0 4px}
|
|
86
|
+
.price span{font-size:1rem;color:var(--muted);font-weight:400}
|
|
87
|
+
.price-desc{color:var(--muted);font-size:.9rem;margin-bottom:24px}
|
|
88
|
+
.price-features{list-style:none;text-align:left;margin-bottom:24px}
|
|
89
|
+
.price-features li{padding:8px 0;font-size:.9rem;color:var(--muted);display:flex;align-items:center;gap:8px}
|
|
90
|
+
.price-features li::before{content:"\\2713";color:var(--green);font-weight:700}
|
|
91
|
+
.price-btn{display:block;width:100%;padding:12px;border-radius:10px;font-weight:600;font-size:.95rem;text-align:center;transition:opacity .2s}
|
|
92
|
+
.price-btn.primary{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff}
|
|
93
|
+
.price-btn.secondary{background:var(--bg);color:var(--text);border:1px solid var(--border)}
|
|
94
|
+
|
|
95
|
+
/* CTA */
|
|
96
|
+
.final-cta{padding:80px 0;text-align:center}
|
|
97
|
+
.final-cta h2{font-size:2.2rem;margin-bottom:16px}
|
|
98
|
+
.final-cta p{color:var(--muted);font-size:1.1rem;margin-bottom:32px}
|
|
99
|
+
|
|
100
|
+
/* Footer */
|
|
101
|
+
footer{padding:32px 0;border-top:1px solid var(--border);text-align:center;color:var(--muted);font-size:.85rem}
|
|
102
|
+
|
|
103
|
+
@media(max-width:640px){
|
|
104
|
+
.hero{padding:60px 0 40px}
|
|
105
|
+
.grid,.steps,.price-cards{grid-template-columns:1fr}
|
|
106
|
+
}
|
|
107
|
+
</style>
|
|
108
|
+
</head>
|
|
109
|
+
<body>
|
|
110
|
+
|
|
111
|
+
<nav>
|
|
112
|
+
<div class="container">
|
|
113
|
+
<div class="logo">CobroYa</div>
|
|
114
|
+
<a href="https://t.me/CobroYa_bot" class="nav-cta">Probar gratis</a>
|
|
115
|
+
</div>
|
|
116
|
+
</nav>
|
|
117
|
+
|
|
118
|
+
<section class="hero">
|
|
119
|
+
<div class="container">
|
|
120
|
+
<div class="badge"><span>●</span> Ya disponible en Telegram y WhatsApp</div>
|
|
121
|
+
<h1>Cobra con Mercado Pago<br>en 10 segundos</h1>
|
|
122
|
+
<p class="subtitle">Genera links de pago desde Telegram o WhatsApp. Sin web, sin codigo, sin complicaciones. Escribi un mensaje y listo.</p>
|
|
123
|
+
<div class="hero-ctas">
|
|
124
|
+
<a href="https://t.me/CobroYa_bot" class="btn-primary">Empezar con Telegram</a>
|
|
125
|
+
<a href="#como-funciona" class="btn-secondary">Ver como funciona</a>
|
|
126
|
+
</div>
|
|
127
|
+
</div>
|
|
128
|
+
</section>
|
|
129
|
+
|
|
130
|
+
<section class="demo">
|
|
131
|
+
<div class="container">
|
|
132
|
+
<div class="demo-box">
|
|
133
|
+
<div class="demo-label">Telegram - @CobroYa_bot</div>
|
|
134
|
+
<div class="demo-line"><span class="demo-user">Tu:</span> /cobrar 5000 Clase de guitarra</div>
|
|
135
|
+
<div class="demo-line"><span class="demo-bot">CobroYa:</span> Link de pago creado!</div>
|
|
136
|
+
<div class="demo-line" style="padding-left:24px"><span class="demo-link">mercadopago.com.ar/checkout/...</span></div>
|
|
137
|
+
<div style="border-top:1px solid #27272a;margin:16px 0"></div>
|
|
138
|
+
<div class="demo-line"><span class="demo-bot">CobroYa:</span> Pago recibido - $5.000</div>
|
|
139
|
+
</div>
|
|
140
|
+
</div>
|
|
141
|
+
</section>
|
|
142
|
+
|
|
143
|
+
<section class="features" id="features">
|
|
144
|
+
<div class="container">
|
|
145
|
+
<h2>Todo lo que necesitas para cobrar</h2>
|
|
146
|
+
<p class="sub">Sin instalar nada. Sin saber programar. Sin crear una web.</p>
|
|
147
|
+
<div class="grid">
|
|
148
|
+
<div class="card">
|
|
149
|
+
<div class="card-icon">⚡</div>
|
|
150
|
+
<h3>Links de pago al instante</h3>
|
|
151
|
+
<p>Escribi el monto y la descripcion. En 2 segundos tenes un link de Mercado Pago listo para enviar a tu cliente.</p>
|
|
152
|
+
</div>
|
|
153
|
+
<div class="card">
|
|
154
|
+
<div class="card-icon">🔔</div>
|
|
155
|
+
<h3>Notificaciones de pago</h3>
|
|
156
|
+
<p>Te avisamos al instante cuando tu cliente paga. Por Telegram o WhatsApp, donde vos quieras.</p>
|
|
157
|
+
</div>
|
|
158
|
+
<div class="card">
|
|
159
|
+
<div class="card-icon">📈</div>
|
|
160
|
+
<h3>Historial de pagos</h3>
|
|
161
|
+
<p>Consulta tus ultimos pagos, el estado de cada uno, y los datos del pagador. Todo desde el chat.</p>
|
|
162
|
+
</div>
|
|
163
|
+
<div class="card">
|
|
164
|
+
<div class="card-icon">↩</div>
|
|
165
|
+
<h3>Devoluciones faciles</h3>
|
|
166
|
+
<p>Devolucion total o parcial con un solo comando. Sin entrar al panel de Mercado Pago.</p>
|
|
167
|
+
</div>
|
|
168
|
+
<div class="card">
|
|
169
|
+
<div class="card-icon">🔒</div>
|
|
170
|
+
<h3>Seguro</h3>
|
|
171
|
+
<p>Validacion HMAC-SHA256 en webhooks. Control de acceso por chat ID. Tu cuenta protegida.</p>
|
|
172
|
+
</div>
|
|
173
|
+
<div class="card">
|
|
174
|
+
<div class="card-icon">🤖</div>
|
|
175
|
+
<h3>Compatible con AI</h3>
|
|
176
|
+
<p>Conecta con Claude, ChatGPT u otros agentes AI via MCP. Automatiza cobros con inteligencia artificial.</p>
|
|
177
|
+
</div>
|
|
178
|
+
</div>
|
|
179
|
+
</div>
|
|
180
|
+
</section>
|
|
181
|
+
|
|
182
|
+
<section class="how" id="como-funciona">
|
|
183
|
+
<div class="container">
|
|
184
|
+
<h2>Como funciona</h2>
|
|
185
|
+
<div class="steps">
|
|
186
|
+
<div class="step">
|
|
187
|
+
<h3>Abri el bot</h3>
|
|
188
|
+
<p>Busca @CobroYa_bot en Telegram o escribinos por WhatsApp</p>
|
|
189
|
+
</div>
|
|
190
|
+
<div class="step">
|
|
191
|
+
<h3>Genera tu link</h3>
|
|
192
|
+
<p>Escribi: /cobrar 5000 Clase de guitarra</p>
|
|
193
|
+
</div>
|
|
194
|
+
<div class="step">
|
|
195
|
+
<h3>Envialo a tu cliente</h3>
|
|
196
|
+
<p>Copia el link y compartilo por donde quieras</p>
|
|
197
|
+
</div>
|
|
198
|
+
<div class="step">
|
|
199
|
+
<h3>Recibe tu plata</h3>
|
|
200
|
+
<p>El pago va directo a tu cuenta de Mercado Pago</p>
|
|
201
|
+
</div>
|
|
202
|
+
</div>
|
|
203
|
+
</div>
|
|
204
|
+
</section>
|
|
205
|
+
|
|
206
|
+
<section class="pricing" id="precios">
|
|
207
|
+
<div class="container">
|
|
208
|
+
<h2>Simple y transparente</h2>
|
|
209
|
+
<p class="sub">Sin sorpresas. Sin comisiones ocultas.</p>
|
|
210
|
+
<div class="price-cards">
|
|
211
|
+
<div class="price-card">
|
|
212
|
+
<h3>Gratis</h3>
|
|
213
|
+
<div class="price">$0 <span>/ mes</span></div>
|
|
214
|
+
<p class="price-desc">Para probar y empezar</p>
|
|
215
|
+
<ul class="price-features">
|
|
216
|
+
<li>Hasta 20 links por mes</li>
|
|
217
|
+
<li>Telegram</li>
|
|
218
|
+
<li>Notificaciones de pago</li>
|
|
219
|
+
<li>Historial de pagos</li>
|
|
220
|
+
</ul>
|
|
221
|
+
<a href="https://t.me/CobroYa_bot" class="price-btn secondary">Empezar gratis</a>
|
|
222
|
+
</div>
|
|
223
|
+
<div class="price-card featured">
|
|
224
|
+
<h3>Pro</h3>
|
|
225
|
+
<div class="price">$4.990 <span>ARS / mes</span></div>
|
|
226
|
+
<p class="price-desc">Para profesionales y negocios</p>
|
|
227
|
+
<ul class="price-features">
|
|
228
|
+
<li>Links ilimitados</li>
|
|
229
|
+
<li>Telegram + WhatsApp</li>
|
|
230
|
+
<li>Notificaciones de pago</li>
|
|
231
|
+
<li>Devoluciones desde el chat</li>
|
|
232
|
+
<li>Soporte prioritario</li>
|
|
233
|
+
</ul>
|
|
234
|
+
<a href="https://t.me/CobroYa_bot" class="price-btn primary">Comenzar ahora</a>
|
|
235
|
+
</div>
|
|
236
|
+
</div>
|
|
237
|
+
</div>
|
|
238
|
+
</section>
|
|
239
|
+
|
|
240
|
+
<section class="final-cta">
|
|
241
|
+
<div class="container">
|
|
242
|
+
<h2>Empeza a cobrar hoy</h2>
|
|
243
|
+
<p>No necesitas web, no necesitas saber programar.<br>Solo tu Telegram y tu cuenta de Mercado Pago.</p>
|
|
244
|
+
<a href="https://t.me/CobroYa_bot" class="btn-primary">Abrir CobroYa en Telegram</a>
|
|
245
|
+
</div>
|
|
246
|
+
</section>
|
|
247
|
+
|
|
248
|
+
<footer>
|
|
249
|
+
<div class="container">
|
|
250
|
+
CobroYa — Cobra facil con Mercado Pago · <a href="mailto:hola@cobroya.app">hola@cobroya.app</a>
|
|
251
|
+
</div>
|
|
252
|
+
</footer>
|
|
253
|
+
|
|
254
|
+
</body>
|
|
255
|
+
</html>`;
|
|
256
|
+
//# sourceMappingURL=landing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"landing.js","sourceRoot":"","sources":["../src/landing.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA2PnB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
4
|
+
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
const index_js_1 = require("./index.js");
|
|
7
|
+
const token = process.env.MERCADO_PAGO_ACCESS_TOKEN;
|
|
8
|
+
if (!token) {
|
|
9
|
+
console.error("MERCADO_PAGO_ACCESS_TOKEN environment variable is required");
|
|
10
|
+
process.exit(1);
|
|
11
|
+
}
|
|
12
|
+
const { tools } = (0, index_js_1.createMercadoPagoTools)(token);
|
|
13
|
+
const server = new mcp_js_1.McpServer({
|
|
14
|
+
name: "mercadopago",
|
|
15
|
+
version: "1.0.0",
|
|
16
|
+
});
|
|
17
|
+
server.tool("create_payment_preference", "Creates a Mercado Pago checkout payment preference (payment link). Returns init_point URL for redirecting buyers.", {
|
|
18
|
+
title: zod_1.z.string(),
|
|
19
|
+
quantity: zod_1.z.number(),
|
|
20
|
+
currency: zod_1.z.string(),
|
|
21
|
+
unit_price: zod_1.z.number(),
|
|
22
|
+
back_urls: zod_1.z.object({
|
|
23
|
+
success: zod_1.z.string().optional(),
|
|
24
|
+
failure: zod_1.z.string().optional(),
|
|
25
|
+
pending: zod_1.z.string().optional(),
|
|
26
|
+
}).optional(),
|
|
27
|
+
notification_url: zod_1.z.string().optional(),
|
|
28
|
+
}, async (params) => {
|
|
29
|
+
try {
|
|
30
|
+
const result = await tools.create_payment_preference(params);
|
|
31
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
35
|
+
return { content: [{ type: "text", text: message }], isError: true };
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
server.tool("get_payment", "Retrieve a payment by its ID. Returns full payment details including status, amount, payer info.", {
|
|
39
|
+
payment_id: zod_1.z.string(),
|
|
40
|
+
}, async (params) => {
|
|
41
|
+
try {
|
|
42
|
+
const result = await tools.get_payment(params);
|
|
43
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
47
|
+
return { content: [{ type: "text", text: message }], isError: true };
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
server.tool("create_refund", "Refund a payment fully or partially. Omit amount for full refund.", {
|
|
51
|
+
payment_id: zod_1.z.string(),
|
|
52
|
+
amount: zod_1.z.number().optional(),
|
|
53
|
+
}, async (params) => {
|
|
54
|
+
try {
|
|
55
|
+
const result = await tools.create_refund(params);
|
|
56
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
60
|
+
return { content: [{ type: "text", text: message }], isError: true };
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
server.tool("search_payments", "Search recent payments for the authenticated merchant. Supports filtering by status.", {
|
|
64
|
+
status: zod_1.z.string().optional(),
|
|
65
|
+
limit: zod_1.z.number().optional(),
|
|
66
|
+
offset: zod_1.z.number().optional(),
|
|
67
|
+
}, async (params) => {
|
|
68
|
+
try {
|
|
69
|
+
const result = await tools.search_payments(params);
|
|
70
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
74
|
+
return { content: [{ type: "text", text: message }], isError: true };
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
server.tool("get_merchant_info", "Retrieve the authenticated merchant's user profile including ID, nickname, and site.", {}, async () => {
|
|
78
|
+
try {
|
|
79
|
+
const result = await tools.get_merchant_info();
|
|
80
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
84
|
+
return { content: [{ type: "text", text: message }], isError: true };
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
async function main() {
|
|
88
|
+
const transport = new stdio_js_1.StdioServerTransport();
|
|
89
|
+
await server.connect(transport);
|
|
90
|
+
}
|
|
91
|
+
main().catch((error) => {
|
|
92
|
+
console.error("Fatal error:", error);
|
|
93
|
+
process.exit(1);
|
|
94
|
+
});
|
|
95
|
+
//# sourceMappingURL=mcp-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
export interface BackUrls {
|
|
2
|
+
success?: string;
|
|
3
|
+
failure?: string;
|
|
4
|
+
pending?: string;
|
|
5
|
+
}
|
|
6
|
+
export interface CreatePaymentPreferenceParams {
|
|
7
|
+
title: string;
|
|
8
|
+
quantity: number;
|
|
9
|
+
currency: string;
|
|
10
|
+
unit_price: number;
|
|
11
|
+
back_urls?: BackUrls;
|
|
12
|
+
notification_url?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface GetPaymentParams {
|
|
15
|
+
payment_id: string;
|
|
16
|
+
}
|
|
17
|
+
export interface CreateRefundParams {
|
|
18
|
+
payment_id: string;
|
|
19
|
+
amount?: number;
|
|
20
|
+
}
|
|
21
|
+
export interface SearchPaymentsParams {
|
|
22
|
+
status?: string;
|
|
23
|
+
sort?: string;
|
|
24
|
+
criteria?: string;
|
|
25
|
+
limit?: number;
|
|
26
|
+
offset?: number;
|
|
27
|
+
}
|
|
28
|
+
export type GetMerchantInfoParams = Record<string, never>;
|
|
29
|
+
export declare const createPaymentPreferenceSchema: {
|
|
30
|
+
readonly name: "create_payment_preference";
|
|
31
|
+
readonly description: "Creates a Mercado Pago checkout payment preference (payment link). Returns init_point URL for redirecting buyers.";
|
|
32
|
+
readonly parameters: {
|
|
33
|
+
readonly type: "object";
|
|
34
|
+
readonly required: readonly ["title", "quantity", "currency", "unit_price"];
|
|
35
|
+
readonly properties: {
|
|
36
|
+
readonly title: {
|
|
37
|
+
readonly type: "string";
|
|
38
|
+
readonly description: "Product or service title";
|
|
39
|
+
};
|
|
40
|
+
readonly quantity: {
|
|
41
|
+
readonly type: "number";
|
|
42
|
+
readonly description: "Quantity of items";
|
|
43
|
+
};
|
|
44
|
+
readonly currency: {
|
|
45
|
+
readonly type: "string";
|
|
46
|
+
readonly description: "Currency ID (e.g. ARS, BRL, MXN, CLP, COP, UYU, PEN)";
|
|
47
|
+
};
|
|
48
|
+
readonly unit_price: {
|
|
49
|
+
readonly type: "number";
|
|
50
|
+
readonly description: "Unit price of the item";
|
|
51
|
+
};
|
|
52
|
+
readonly back_urls: {
|
|
53
|
+
readonly type: "object";
|
|
54
|
+
readonly description: "URLs to redirect the buyer after payment";
|
|
55
|
+
readonly properties: {
|
|
56
|
+
readonly success: {
|
|
57
|
+
readonly type: "string";
|
|
58
|
+
readonly description: "URL on approved payment";
|
|
59
|
+
};
|
|
60
|
+
readonly failure: {
|
|
61
|
+
readonly type: "string";
|
|
62
|
+
readonly description: "URL on rejected payment";
|
|
63
|
+
};
|
|
64
|
+
readonly pending: {
|
|
65
|
+
readonly type: "string";
|
|
66
|
+
readonly description: "URL on pending payment";
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
readonly notification_url: {
|
|
71
|
+
readonly type: "string";
|
|
72
|
+
readonly description: "Webhook URL for payment notifications (IPN)";
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
export declare const getPaymentSchema: {
|
|
78
|
+
readonly name: "get_payment";
|
|
79
|
+
readonly description: "Retrieve a payment by its ID. Returns full payment details including status, amount, payer info.";
|
|
80
|
+
readonly parameters: {
|
|
81
|
+
readonly type: "object";
|
|
82
|
+
readonly required: readonly ["payment_id"];
|
|
83
|
+
readonly properties: {
|
|
84
|
+
readonly payment_id: {
|
|
85
|
+
readonly type: "string";
|
|
86
|
+
readonly description: "The payment ID to look up";
|
|
87
|
+
};
|
|
88
|
+
};
|
|
89
|
+
};
|
|
90
|
+
};
|
|
91
|
+
export declare const createRefundSchema: {
|
|
92
|
+
readonly name: "create_refund";
|
|
93
|
+
readonly description: "Refund a payment fully or partially. Omit amount for full refund.";
|
|
94
|
+
readonly parameters: {
|
|
95
|
+
readonly type: "object";
|
|
96
|
+
readonly required: readonly ["payment_id"];
|
|
97
|
+
readonly properties: {
|
|
98
|
+
readonly payment_id: {
|
|
99
|
+
readonly type: "string";
|
|
100
|
+
readonly description: "The payment ID to refund";
|
|
101
|
+
};
|
|
102
|
+
readonly amount: {
|
|
103
|
+
readonly type: "number";
|
|
104
|
+
readonly description: "Partial refund amount. Omit for full refund.";
|
|
105
|
+
};
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
export declare const searchPaymentsSchema: {
|
|
110
|
+
readonly name: "search_payments";
|
|
111
|
+
readonly description: "Search recent payments for the authenticated merchant. Supports filtering by status.";
|
|
112
|
+
readonly parameters: {
|
|
113
|
+
readonly type: "object";
|
|
114
|
+
readonly properties: {
|
|
115
|
+
readonly status: {
|
|
116
|
+
readonly type: "string";
|
|
117
|
+
readonly description: "Filter by status: approved, pending, rejected, refunded, cancelled";
|
|
118
|
+
};
|
|
119
|
+
readonly sort: {
|
|
120
|
+
readonly type: "string";
|
|
121
|
+
readonly description: "Sort field (e.g. date_created)";
|
|
122
|
+
};
|
|
123
|
+
readonly criteria: {
|
|
124
|
+
readonly type: "string";
|
|
125
|
+
readonly description: "Sort order: asc or desc";
|
|
126
|
+
};
|
|
127
|
+
readonly limit: {
|
|
128
|
+
readonly type: "number";
|
|
129
|
+
readonly description: "Max results (default 30, max 100)";
|
|
130
|
+
};
|
|
131
|
+
readonly offset: {
|
|
132
|
+
readonly type: "number";
|
|
133
|
+
readonly description: "Pagination offset";
|
|
134
|
+
};
|
|
135
|
+
};
|
|
136
|
+
};
|
|
137
|
+
};
|
|
138
|
+
export declare const getMerchantInfoSchema: {
|
|
139
|
+
readonly name: "get_merchant_info";
|
|
140
|
+
readonly description: "Retrieve the authenticated merchant's user profile including ID, nickname, and site.";
|
|
141
|
+
readonly parameters: {
|
|
142
|
+
readonly type: "object";
|
|
143
|
+
readonly properties: {};
|
|
144
|
+
};
|
|
145
|
+
};
|
|
146
|
+
export declare const allSchemas: ({
|
|
147
|
+
readonly name: "create_payment_preference";
|
|
148
|
+
readonly description: "Creates a Mercado Pago checkout payment preference (payment link). Returns init_point URL for redirecting buyers.";
|
|
149
|
+
readonly parameters: {
|
|
150
|
+
readonly type: "object";
|
|
151
|
+
readonly required: readonly ["title", "quantity", "currency", "unit_price"];
|
|
152
|
+
readonly properties: {
|
|
153
|
+
readonly title: {
|
|
154
|
+
readonly type: "string";
|
|
155
|
+
readonly description: "Product or service title";
|
|
156
|
+
};
|
|
157
|
+
readonly quantity: {
|
|
158
|
+
readonly type: "number";
|
|
159
|
+
readonly description: "Quantity of items";
|
|
160
|
+
};
|
|
161
|
+
readonly currency: {
|
|
162
|
+
readonly type: "string";
|
|
163
|
+
readonly description: "Currency ID (e.g. ARS, BRL, MXN, CLP, COP, UYU, PEN)";
|
|
164
|
+
};
|
|
165
|
+
readonly unit_price: {
|
|
166
|
+
readonly type: "number";
|
|
167
|
+
readonly description: "Unit price of the item";
|
|
168
|
+
};
|
|
169
|
+
readonly back_urls: {
|
|
170
|
+
readonly type: "object";
|
|
171
|
+
readonly description: "URLs to redirect the buyer after payment";
|
|
172
|
+
readonly properties: {
|
|
173
|
+
readonly success: {
|
|
174
|
+
readonly type: "string";
|
|
175
|
+
readonly description: "URL on approved payment";
|
|
176
|
+
};
|
|
177
|
+
readonly failure: {
|
|
178
|
+
readonly type: "string";
|
|
179
|
+
readonly description: "URL on rejected payment";
|
|
180
|
+
};
|
|
181
|
+
readonly pending: {
|
|
182
|
+
readonly type: "string";
|
|
183
|
+
readonly description: "URL on pending payment";
|
|
184
|
+
};
|
|
185
|
+
};
|
|
186
|
+
};
|
|
187
|
+
readonly notification_url: {
|
|
188
|
+
readonly type: "string";
|
|
189
|
+
readonly description: "Webhook URL for payment notifications (IPN)";
|
|
190
|
+
};
|
|
191
|
+
};
|
|
192
|
+
};
|
|
193
|
+
} | {
|
|
194
|
+
readonly name: "get_payment";
|
|
195
|
+
readonly description: "Retrieve a payment by its ID. Returns full payment details including status, amount, payer info.";
|
|
196
|
+
readonly parameters: {
|
|
197
|
+
readonly type: "object";
|
|
198
|
+
readonly required: readonly ["payment_id"];
|
|
199
|
+
readonly properties: {
|
|
200
|
+
readonly payment_id: {
|
|
201
|
+
readonly type: "string";
|
|
202
|
+
readonly description: "The payment ID to look up";
|
|
203
|
+
};
|
|
204
|
+
};
|
|
205
|
+
};
|
|
206
|
+
} | {
|
|
207
|
+
readonly name: "create_refund";
|
|
208
|
+
readonly description: "Refund a payment fully or partially. Omit amount for full refund.";
|
|
209
|
+
readonly parameters: {
|
|
210
|
+
readonly type: "object";
|
|
211
|
+
readonly required: readonly ["payment_id"];
|
|
212
|
+
readonly properties: {
|
|
213
|
+
readonly payment_id: {
|
|
214
|
+
readonly type: "string";
|
|
215
|
+
readonly description: "The payment ID to refund";
|
|
216
|
+
};
|
|
217
|
+
readonly amount: {
|
|
218
|
+
readonly type: "number";
|
|
219
|
+
readonly description: "Partial refund amount. Omit for full refund.";
|
|
220
|
+
};
|
|
221
|
+
};
|
|
222
|
+
};
|
|
223
|
+
} | {
|
|
224
|
+
readonly name: "search_payments";
|
|
225
|
+
readonly description: "Search recent payments for the authenticated merchant. Supports filtering by status.";
|
|
226
|
+
readonly parameters: {
|
|
227
|
+
readonly type: "object";
|
|
228
|
+
readonly properties: {
|
|
229
|
+
readonly status: {
|
|
230
|
+
readonly type: "string";
|
|
231
|
+
readonly description: "Filter by status: approved, pending, rejected, refunded, cancelled";
|
|
232
|
+
};
|
|
233
|
+
readonly sort: {
|
|
234
|
+
readonly type: "string";
|
|
235
|
+
readonly description: "Sort field (e.g. date_created)";
|
|
236
|
+
};
|
|
237
|
+
readonly criteria: {
|
|
238
|
+
readonly type: "string";
|
|
239
|
+
readonly description: "Sort order: asc or desc";
|
|
240
|
+
};
|
|
241
|
+
readonly limit: {
|
|
242
|
+
readonly type: "number";
|
|
243
|
+
readonly description: "Max results (default 30, max 100)";
|
|
244
|
+
};
|
|
245
|
+
readonly offset: {
|
|
246
|
+
readonly type: "number";
|
|
247
|
+
readonly description: "Pagination offset";
|
|
248
|
+
};
|
|
249
|
+
};
|
|
250
|
+
};
|
|
251
|
+
} | {
|
|
252
|
+
readonly name: "get_merchant_info";
|
|
253
|
+
readonly description: "Retrieve the authenticated merchant's user profile including ID, nickname, and site.";
|
|
254
|
+
readonly parameters: {
|
|
255
|
+
readonly type: "object";
|
|
256
|
+
readonly properties: {};
|
|
257
|
+
};
|
|
258
|
+
})[];
|