Oktopus expone un MCP server (Model Context Protocol, Streamable HTTP) y una API REST. Con esto, un agente de IA —Claude Code, Claude Desktop, Cursor— puede montar y operar una tienda de pago contra entrega (COD) de punta a punta: crear productos, generar landings, conectar Dropi, crear órdenes contra entrega y cobrarlas.
Es el reemplazo de Shopify + Releasit para dropshipping COD, agent-native. La categoría: el "ACP del contra entrega" — donde el Agentic Commerce Protocol de Stripe/OpenAI asume tarjeta en US/EU, Oktopus cobra contra entrega y crea la orden en Dropi, el modelo dominante de LATAM.
Endpoint MCP: https://www.oktopus.lat/api/mcp (alias de /api/mcp, Streamable HTTP, stateless). Auth: header Authorization: Bearer okto_live_secret_….
claude mcp add --transport http oktopus https://www.oktopus.lat/api/mcp \
--header "Authorization: Bearer TU_API_KEY"
{
"mcpServers": {
"oktopus": {
"type": "http",
"url": "https://www.oktopus.lat/api/mcp",
"headers": { "Authorization": "Bearer TU_API_KEY" }
}
}
}
Creá una cuenta en oktopus.lat y generá una key en Configuración → API keys, con el scope mcp:invoke (y orders:write / products:write / landings:write según lo que quieras que el agente pueda escribir). Para iterar sin efectos reales, usá una key de test (okto_test_secret_…): crea órdenes en sandbox sin empujarlas a Dropi.
| Tool | Tipo | Qué hace |
|---|---|---|
okto_dashboard_metrics | lee | Resumen del negocio: ingresos 30d, órdenes pendientes, productos. |
okto_store_get | lee | Tiendas del usuario (país, moneda, branding). |
okto_orders_recent | lee | Últimas órdenes COD (cliente, ciudad, total, estado). |
okto_order_get | lee | Detalle de una orden y su estado en Dropi. |
okto_product_lookup | lee | Buscar productos del catálogo por nombre. |
okto_landings_list · okto_landing_get | lee | Listar y ver landings (páginas de venta). |
okto_dropi_push_order | escribe | Empujar una orden a Dropi / la transportadora (crea la orden COD real). |
okto_order_update_status | escribe | Cambiar el estado de una orden. |
okto_product_price_update | escribe | Actualizar precio / precio tachado de un producto. |
okto_landing_set_branding · set_field · toggle_guarantee · status_set | escribe | Editar colores, textos, garantía y publicar/ocultar una landing. |
okto_checkout_key_create | escribe | Acuña la publishable key + el snippet para enchufar tu propia página al checkout COD. |
Estas son solo algunas. El MCP expone más de 47 herramientas (crear orden COD, generar landing con IA, cobertura de contra entrega por ciudad, operar WhatsApp, y más). Ver el catálogo completo por categoría en /mcp-server, o pedile al MCP tools/list para el set exacto.
Spec completa: openapi.json.
POST /api/orders/create — crear una orden de pago contra entrega.GET /api/geo/cities?country=CO — ciudades/regiones por país (LATAM).Para cobrar contra entrega en cualquier página, incrustá el SDK:
<div id="oktopus-checkout"></div>
<script src="https://www.oktopus.lat/embed/oktopus-checkout.js"></script>
<script>
window.Oktopus.checkout({
publishableKey: 'okto_live_pub_...',
productId: 'uuid-del-producto',
country: 'CO', unitPrice: 120000,
mount: '#oktopus-checkout',
})
</script>
No tenés que usar nuestras landings ni nuestro hosting. Armá tu página donde quieras —Claude Code, tu Vercel, Framer, tu propio React— y enchufá el checkout. La orden entra igual que una landing nativa: anti-fraude de precio + push a Dropi + confirmación por WhatsApp. Hay 3 niveles de libertad:
Pegás el snippet de arriba (Oktopus.checkout({...})) y listo: renderiza el formulario COD completo (nombre, teléfono, departamento→ciudad en cascada, dirección) y crea la orden. Cero backend tuyo.
Diseñás tu propio formulario y POSTeás vos mismo, desde tu dominio autorizado, con tu publishable key. La tienda y el país salen de la llave; solo mandás el producto + los datos del cliente:
fetch('https://www.oktopus.lat/api/orders/create', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer okto_live_pub_...',
},
body: JSON.stringify({
product_id: 'uuid-del-producto',
nombre: 'Juan Pérez', telefono: '3001234567',
departamento: 'Cundinamarca', ciudad: 'Bogotá',
direccion: 'Calle 1 # 2-3',
quantity: 1, total_price: 120000,
}),
})
Las ciudades válidas por país salen de GET /api/geo/cities?country=CO. Para crear órdenes desde tu backend (sin navegador) usá una key secret con scope orders:create en vez de la publishable.
¿Arrancaste con una landing que generamos nosotros y la querés a tu medida? Pedíle a tu agente que te la "ejecte" a código con okto_landing_eject (HTML standalone y proyecto React+Vite) para llevártela, pimpearla sin límite y deployarla en tu Vercel — con el checkout ya cableado.
No armes cualquier página: antes de construir o ejectar, pedíle a tu agente okto_page_playbook — devuelve el checklist con los datos reales de tu cuenta (tu pixel, tu país). En resumen, una buena página contra entrega tiene:
Si conectaste tu cuenta por MCP (con tu key secret), tu agente acuña la publishable key y te trae el snippet listo sin que entres al dashboard. Una sola llamada:
okto_checkout_key_create({
domains: ["mitienda.com"], // la key SOLO funciona desde acá
product_id: "uuid-del-producto",
environment: "live" // o "test" para sandbox
})
// → { publishable_key, snippet, allowed_domains, ... }
La publishable key es pública (va en el JS del cliente) pero de bajo riesgo: solo crea órdenes y solo funciona desde los dominios que autorizaste. Si la página vive en otro dominio, acuñás otra o agregás el dominio.
okto_test_…) para iterar sin tocar Dropi real.