Store
Catálogo de productos con su precio del Store.
Privacidad y analítica
Utilizamos cookies técnicas necesarias y, solo si das tu consentimiento, analítica y pixels de marketing para mejorar la web y medir campañas.
Catálogo de productos con su precio del Store.
Solo lectura en todas las puertas.
Busca productos del Store con las palabras de la persona (basta con una: «cartel feria» encuentra cartelería) o por categoría, ordenados por dónde coinciden, con el precio que pagaría esta marca («Desde» cuando es un precio base), si están incluidos en su plan y si puede comprarlos. Nunca devuelve identificadores de pago.
| Campo | Valor |
|---|---|
| Tipo | Lectura |
| Método HTTP | POST /api/v1/store.products.search |
| Herramienta MCP | store_products_search |
| Alcance | store.read |
| Rol mínimo | Lector |
| Confirmación humana | No |
| Puertas | Nödo, Voz, MCP, API, Chat, Pantallas, Apps |
| Estado | Disponible |
| Widget | carousel |
Entrada
{
query?: string // ≤ 200
category?: string // ≤ 60
cursor?: string // ≤ 512 · Opaque cursor from a previous `nextCursor`.
limit?: integer // 1–50 · default 20
}Salida
{
items: Array<{
slug: string
name: string
summary: string | null
category: string | null // Category key, for filtering (store_products_search `category`).
categoryName?: string | null // The category as people read it («Impresión y espacios»).
includedInPlan: boolean
price: {
amount: integer // -9007199254740991–9007199254740991 · Minor currency units (cents): 99900 is 999 €.
currency: string
from: boolean // A base price: say «from» (Desde 999 €); the final price depends on what the brand adds.
interval: "day" | "week" | "month" | "year" | null // Null for a one-time price.
intervalCount: integer | null
}
| null // The price the Store shows, before tax. Null when the product is free, included or priced on request.
paidPlanOnly: boolean // Only brands with a paid plan can buy it.
available: boolean // False when this brand cannot buy it yet (a paid-plan product on the Free plan): suggest upgrading the plan, never buying it.
url: string // uri · Store page inside the app.
productId?: string // Product id: what favourites, visits and starting a work name.
icon?: string | null // Tabler icon name or image URL of the product.
featuredImage?: string | null // The product's 16:9 editorial cover (public URL).
appSaleChannel?: "checkout" | "not_sold" // How the iPhone, iPad and Android apps sell it: `checkout` = our own checkout (Stripe, Apple Pay / Google Pay), never an in-app purchase, because people deliver it; `not_sold` = nothing to pay (free, included or on request).
}>
nextCursor: string | null
}Un producto entero: qué incluye (pasos), plazo habitual, precio del Store («Desde» cuando es base), si el plan lo incluye y si la marca puede comprarlo. Con show_card: true pinta su ficha con precio, plazo y un solo botón (Empezar o Comprar) que abre su página sobre la conversación.
| Campo | Valor |
|---|---|
| Tipo | Lectura |
| Método HTTP | POST /api/v1/store.products.get |
| Herramienta MCP | store_products_get |
| Alcance | store.read |
| Rol mínimo | Lector |
| Confirmación humana | No |
| Puertas | Nödo, Voz, MCP, API, Chat, Pantallas, Apps |
| Estado | Disponible |
| Widget | record |
Entrada
{
slug: string // ≤ 120
}Salida
{
slug: string
name: string
summary: string | null
category: string | null // Category key, for filtering (store_products_search `category`).
categoryName?: string | null // The category as people read it («Impresión y espacios»).
includedInPlan: boolean
price: {
amount: integer // -9007199254740991–9007199254740991 · Minor currency units (cents): 99900 is 999 €.
currency: string
from: boolean // A base price: say «from» (Desde 999 €); the final price depends on what the brand adds.
interval: "day" | "week" | "month" | "year" | null // Null for a one-time price.
intervalCount: integer | null
}
| null // The price the Store shows, before tax. Null when the product is free, included or priced on request.
paidPlanOnly: boolean // Only brands with a paid plan can buy it.
available: boolean // False when this brand cannot buy it yet (a paid-plan product on the Free plan): suggest upgrading the plan, never buying it.
url: string // uri · Store page inside the app.
productId?: string // Product id: what favourites, visits and starting a work name.
icon?: string | null // Tabler icon name or image URL of the product.
featuredImage?: string | null // The product's 16:9 editorial cover (public URL).
appSaleChannel?: "checkout" | "not_sold" // How the iPhone, iPad and Android apps sell it: `checkout` = our own checkout (Stripe, Apple Pay / Google Pay), never an in-app purchase, because people deliver it; `not_sold` = nothing to pay (free, included or on request).
description: string | null
steps: string[]
typicalDays: integer | null
}Lo que esta marca necesita ahora del Store, en orden y con el porqué: parte de sus hechos (sin nombre, sin web, sin logo, sin redes…) y de su Genoma, y descarta lo que ya tiene o rechazó.
| Campo | Valor |
|---|---|
| Tipo | Lectura |
| Método HTTP | POST /api/v1/store.recommendations.list |
| Herramienta MCP | store_recommendations_list |
| Alcance | store.read |
| Rol mínimo | Lector |
| Confirmación humana | No |
| Puertas | Nödo, Voz, MCP, API, Chat, Pantallas, Apps |
| Estado | Disponible |
| Widget | carousel |
Entrada
{
limit?: integer // 1–8 · default 3
need?: "naming" | "visual_identity" | "strategy" | "website" | "domain" | "ecommerce" | "app" | "social_content" | "video" | "design" | "seo_content" | "advertising" | "web_maintenance" // Only products for this need (e.g. naming for a brand without a name).
}Salida
{
items: Array<{
slug: string
name: string
summary: string | null
category: string | null // Category key, for filtering (store_products_search `category`).
categoryName?: string | null // The category as people read it («Impresión y espacios»).
includedInPlan: boolean
price: {
amount: integer // -9007199254740991–9007199254740991 · Minor currency units (cents): 99900 is 999 €.
currency: string
from: boolean // A base price: say «from» (Desde 999 €); the final price depends on what the brand adds.
interval: "day" | "week" | "month" | "year" | null // Null for a one-time price.
intervalCount: integer | null
}
| null // The price the Store shows, before tax. Null when the product is free, included or priced on request.
paidPlanOnly: boolean // Only brands with a paid plan can buy it.
available: boolean // False when this brand cannot buy it yet (a paid-plan product on the Free plan): suggest upgrading the plan, never buying it.
url: string // uri · Store page inside the app.
productId?: string // Product id: what favourites, visits and starting a work name.
icon?: string | null // Tabler icon name or image URL of the product.
featuredImage?: string | null // The product's 16:9 editorial cover (public URL).
appSaleChannel?: "checkout" | "not_sold" // How the iPhone, iPad and Android apps sell it: `checkout` = our own checkout (Stripe, Apple Pay / Google Pay), never an in-app purchase, because people deliver it; `not_sold` = nothing to pay (free, included or on request).
need: "naming" | "visual_identity" | "strategy" | "website" | "domain" | "ecommerce" | "app" | "social_content" | "video" | "design" | "seo_content" | "advertising" | "web_maintenance" // The brand need this product answers.
reason: string // Why it is recommended to this brand, in the caller language.
}>
}Para ordenar el lanzador de la tienda: los productos con los que la marca más ha empezado trabajos y los que tú has abierto hace poco. Solo ids de producto; los datos de cada uno salen de store.products.*.
| Campo | Valor |
|---|---|
| Tipo | Lectura |
| Método HTTP | POST /api/v1/store.launcher.signals |
| Herramienta MCP | store_launcher_signals |
| Alcance | store.read |
| Rol mínimo | Lector |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{
limit?: integer // 1–20 · default 12
}Salida
{
mostUsedProductIds: string[]
recentlyVisitedProductIds: string[]
}Los planes que se pueden contratar, con su precio y su descripción en tu idioma.
| Campo | Valor |
|---|---|
| Tipo | Lectura |
| Método HTTP | POST /api/v1/store.plans.list |
| Herramienta MCP | store_plans_list |
| Alcance | store.read |
| Rol mínimo | self |
| Confirmación humana | No |
| Puertas | API, Pantallas, Apps |
| Estado | Disponible |
Entrada
{
translated?: boolean // Descriptions in the caller language (default: as stored).
}Salida
{
plans: Array<{
id: string
name: string
description: string | null
monthly_price: integer // -9007199254740991–9007199254740991
annual_price: integer // -9007199254740991–9007199254740991
currency: string
localized_prices: Record<string, {
monthly: number
annual: number
}>
is_featured: boolean
plan_mark: string | null
}>
}Lo que la marca necesita ahora del Store, con todo lo que pinta su tarjeta del inicio. Para la lista con el porqué, store.recommendations.list.
| Campo | Valor |
|---|---|
| Tipo | Lectura |
| Método HTTP | POST /api/v1/store.recommendations.cards |
| Herramienta MCP | store_recommendations_cards |
| Alcance | store.read |
| Rol mínimo | Lector |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{
limit?: integer // 1–8 · default 3
}Salida
{
items: Array<{
slug: string
name: string
summary: string | null
category: string | null // Category key, for filtering (store_products_search `category`).
categoryName?: string | null // The category as people read it («Impresión y espacios»).
includedInPlan: boolean
price: {
amount: integer // -9007199254740991–9007199254740991 · Minor currency units (cents): 99900 is 999 €.
currency: string
from: boolean // A base price: say «from» (Desde 999 €); the final price depends on what the brand adds.
interval: "day" | "week" | "month" | "year" | null // Null for a one-time price.
intervalCount: integer | null
}
| null // The price the Store shows, before tax. Null when the product is free, included or priced on request.
paidPlanOnly: boolean // Only brands with a paid plan can buy it.
available: boolean // False when this brand cannot buy it yet (a paid-plan product on the Free plan): suggest upgrading the plan, never buying it.
url: string // uri · Store page inside the app.
productId: string
icon: string | null
featuredImage: string | null
appSaleChannel?: "checkout" | "not_sold" // How the iPhone, iPad and Android apps sell it: `checkout` = our own checkout (Stripe, Apple Pay / Google Pay), never an in-app purchase, because people deliver it; `not_sold` = nothing to pay (free, included or on request).
need: "naming" | "visual_identity" | "strategy" | "website" | "domain" | "ecommerce" | "app" | "social_content" | "video" | "design" | "seo_content" | "advertising" | "web_maintenance"
score: number
reasonKey: string
reason: string | null
}>
}Actualizado el 1 de enero de 1970