Privacy and analytics

We use necessary technical cookies and, only with your consent, analytics and marketing pixels to improve the website and measure campaigns.

Privacy policyCookie policy
Docs
English
EspañolEnglishFrançaisDeutschItalianoPortuguês

Getting started

  • What is Nömad?
  • Getting started with Nömad
  • Create your brand and complete the Genome
  • Invite your team
  • Glossary

Brand OS

  • What is inside Brand OS
  • What is the Genome?
  • Who is Nödo?
  • Talk to Nödo: voice, cards and ordering from the Store
  • Conversations: your team and Nödo
  • What does a Brand Manager do?
  • Brand Kit and Library
  • Posts and calendar
  • Connections
  • Meetings
  • Files we send you with NödoTransfer
  • Your quotes

Work

  • Work and tasks
  • Ordering work
  • Following, reviewing and approving deliveries
  • Approving the posts Nömad prepares
  • Custom quotes
  • Brand history
  • Yes, there are humans behind it

Account and billing

  • Plans and pricing
  • Billing and payments
  • Paying from the apps (iPhone and Android)
  • People and access
  • Organization and brand roles
  • Workspaces and multiple brands
  • Your name and @username
  • Languages, apps and data
  • Leave, close or delete: account, brands and workspaces
  • Delete and restore: what goes and what stays
  • Inbox and notifications: how we let you know
  • Push notifications on your phone and browser
  • Nömad emails and your preferences

Help

  • How to get help

API

  • Brand API
    • Errors
    • Permissions and roles
    • Events and webhooks
    • Brand
    • Genome
    • Brand Kit
    • Library
    • Works
    • Calendar
    • Connections
    • Publishing
    • Inbox
    • Team
    • Account and team
    • Conversation
    • Memory
    • Questions
    • Media
    • Store
    • Plan
    • Orders
    • Activity
    • Workspace
    • Your account
    • Billing
    • Sync
    • Website and domains
    • Statistics
    • Events

MCP

  • MCP server

Connectors

  • Brand connectors

Nödo and agents

  • Nödo in the brand

Genome

  • Genome specification
API/Brand API
Reference9 min read

Store

Product catalog with its Store price.

On this page
  • store.products.search · Search the Store
  • store.products.get · View a product
  • store.recommendations.list · Recommended for the brand
  • store.launcher.signals · Most used and recently visited
Русский
한국어
日本語
中文
हिन्दी
Open the app
  • store.plans.list · Nömad plans
  • store.recommendations.cards · Home recommendations
  • Read-only in every door.

    store.products.search · Search the Store

    Finds Store products by the person's own words (any word counts: «cartel feria» finds signage) or by category key, ranked by where the words match, in the caller language: the price this brand would pay (price, flagged from for a base price: «from 999 €»; null when included or on request), includedInPlan, available and categoryName. When nothing matches, try once with another word or a broader category before saying the Store has nothing, and never tell the person about the search itself. Pass show_card: true only on the read whose result you present: one product draws its product card. Never returns payment ids.

    FieldValue
    KindRead
    HTTP methodPOST /api/v1/store.products.search
    MCP toolstore_products_search
    Scopestore.read
    Minimum roleViewer
    Human confirmationNo
    DoorsNödo, Voice, MCP, API, Chat, Screens, Apps
    StatusAvailable
    Widgetcarousel

    Input

    {
      query?: string  // ≤ 200
      category?: string  // ≤ 60
      cursor?: string  // ≤ 512 · Opaque cursor from a previous `nextCursor`.
      limit?: integer  // 1–50 · default 20
    }

    Output

    {
      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
    }

    store.products.get · View a product

    One product in full: what it includes (steps), typicalDays, its Store price (flagged from for a base price), whether the plan includes it (includedInPlan: it can start now) and whether this brand can buy it (available). Use it to present the product the person is considering, with show_card: true: its card carries the price, timing and one button (Empezar when included, Comprar otherwise) that opens the product page over this conversation, where the person pays. Never take payment details or say it is bought. Optional extras are not steps of the base product.

    FieldValue
    KindRead
    HTTP methodPOST /api/v1/store.products.get
    MCP toolstore_products_get
    Scopestore.read
    Minimum roleViewer
    Human confirmationNo
    DoorsNödo, Voice, MCP, API, Chat, Screens, Apps
    StatusAvailable
    Widgetrecord

    Input

    {
      slug: string  // ≤ 120
    }

    Output

    {
      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
    }

    store.recommendations.list · Recommended for the brand

    What this brand needs next from the Store, in order and with the reason: it starts from the brand facts (no name yet, no website, no logo, no social presence…) and its Genome, and leaves out what it already has or dismissed. Use it when the person asks what the brand needs next or which service fits; quote the reason, never push.

    FieldValue
    KindRead
    HTTP methodPOST /api/v1/store.recommendations.list
    MCP toolstore_recommendations_list
    Scopestore.read
    Minimum roleViewer
    Human confirmationNo
    DoorsNödo, Voice, MCP, API, Chat, Screens, Apps
    StatusAvailable
    Widgetcarousel

    Input

    {
      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).
    }

    Output

    {
      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.
      }>
    }

    store.launcher.signals · Most used and recently visited

    What sorts the Store launcher: the products the brand started the most works from (test runs aside) and the ones the caller opened lately (brand.product_visits.record), newest first. Product ids only; read each product with store.products.*.

    FieldValue
    KindRead
    HTTP methodPOST /api/v1/store.launcher.signals
    MCP toolstore_launcher_signals
    Scopestore.read
    Minimum roleViewer
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      limit?: integer  // 1–20 · default 12
    }

    Output

    {
      mostUsedProductIds: string[]
      recentlyVisitedProductIds: string[]
    }

    store.plans.list · Nömad plans

    The plans that can be subscribed, with their price and description in the caller's language.

    FieldValue
    KindRead
    HTTP methodPOST /api/v1/store.plans.list
    MCP toolstore_plans_list
    Scopestore.read
    Minimum roleself
    Human confirmationNo
    DoorsAPI, Screens, Apps
    StatusAvailable

    Input

    {
      translated?: boolean  // Descriptions in the caller language (default: as stored).
    }

    Output

    {
      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
      }>
    }

    store.recommendations.cards · Home recommendations

    What the brand needs next from the Store with everything its home card draws (images, prices, plan inclusion). For the list with the reason in words use store.recommendations.list.

    FieldValue
    KindRead
    HTTP methodPOST /api/v1/store.recommendations.cards
    MCP toolstore_recommendations_cards
    Scopestore.read
    Minimum roleViewer
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      limit?: integer  // 1–8 · default 3
    }

    Output

    {
      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
      }>
    }

    Updated on January 1, 1970

    PreviousMediaNextPlan

    In this section

    • Errors
    • Permissions and roles
    • Events and webhooks
    • Brand
    • Genome
    • Brand Kit
    • Library
    • Works
    Can't find what you need? Write to usWrite to usGo to the app
    © 2026 Nömad · Nömad documentationLinkedInInstagramThreadsFacebookTikTokYouTubeX
    Go to nomad.oooBack to top

    On this page

    • store.products.search · Search the Store
    • store.products.get · View a product
    • store.recommendations.list · Recommended for the brand
    • store.launcher.signals · Most used and recently visited
    • store.plans.list · Nömad plans
    • store.recommendations.cards · Home recommendations