Koskamo

NAO MCP

NAO MCP is an official server for the NAO marketplace, enabling AI agents to search for local products in Guadalajara, manage shopping carts, and place test orders with local vendors and delivery riders. It supports Streamable HTTP transport and provides tools for product discovery, cart management, and order status tracking without requiring user authentication for basic read and test purchase operations.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

NAO MCP logo, by NAOVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by NAO
MCP endpoint (Streamable HTTP)
https://nao.hechq.com/api/mcp
Vendor documentation

What you can do with it

  • Search for local products by category and neighborhood
  • Add items to a shopping cart and view totals
  • Create test orders for local delivery
  • Check order status using provided tokens

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
nao-gdl 0.1.0
MCP protocol
2025-06-18
Tools
8 advertised
Resources
3 advertised
Resource templates
0 advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "resources": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

NAO es el marketplace de México hecho para bots (fase 1: Guadalajara). Tu agente compra donde más te conviene: vendedores de NAO o negocios locales de tu colonia (ferreterías, papelerías, refaccionarias, farmacias, tienditas…), entregados el mismo día por repartidores de colonia. Para comprar ("cómprame…", "pídeme…", "tacos para 4"): buscar_productos → (opcional ver_producto) → crear_pedido. No preguntes de más: si la persona no da colonia, compra igual (NAO usa una entrega de demo en la colonia del negocio; no pidas nombre ni teléfono). Elige lo que mejor cumpla lo pedido (cantidad para el número de personas) y de UN solo negocio local cuando se pueda (cada negocio cobra su envío). También puedes armar carrito: agregar_al_carrito (devuelve un token 'carrito') → ver_carrito → crear_pedido con ese carrito. En ChatGPT y Claude las herramientas muestran tarjetas con botones Agregar y Pedir. Después de pedir: estado_pedido (con el token que devolvió crear_pedido). Para reintentar una compra sin duplicarla manda la misma clave_idempotencia. Para negocios locales cerca: buscar_tienditas_cerca → ver_tiendita → crear_pedido. Sin llave puedes leer y comprar (con límites bajos). Si tienes llave del buzón de bots de NAO, mándala como Authorization: Bearer <llave>: tus pedidos quedan ligados a tu bot y tus límites son más altos. Ninguna herramienta cambia productos, precios, estados ni hilos: eso solo se hace con sesión en los paneles. Precios en MXN. Demo de NAO: todos los pedidos son de prueba (pago al recibir, pero no se cobra nada y nadie entrega nada). Los negocios son de ejemplo. Después de comprar, comparte con la persona la liga "seguimiento" y la de "vista_del_negocio" (ahí se ve cómo le llega el pedido al negocio).

Tools

8 advertised

buscar_productos — Buscar productos
Advertised by the server during the last successful anonymous check.
Advertised read-only

Busca productos en NAO (Guadalajara): vendedores de NAO y negocios locales de tu colonia (ferreterías, tlapalerías, refaccionarias, papelerías, farmacias, tienditas…). Con colonia o código postal solo devuelve lo que sí llega ahí (los negocios locales entregan el mismo día, a 2 km, con repartidor de colonia). Precios en MXN.

buscar_productos input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "texto": {
      "type": "string",
      "maxLength": 120,
      "description": "Qué buscas, en español: 'leche', 'tenis', 'café en grano'."
    },
    "limite": {
      "type": "integer",
      "maximum": 50,
      "minimum": 1,
      "description": "Máximo de resultados (12 por omisión)."
    },
    "colonia": {
      "type": "string",
      "maxLength": 80,
      "description": "Colonia de entrega en Guadalajara, p. ej. 'Santa Tere', 'Americana', 'Chapalita'."
    },
    "categoria": {
      "enum": [
        "hogar",
        "moda",
        "cafe-cocina",
        "electronica",
        "papeleria",
        "abarrotes",
        "bebidas",
        "panaderia",
        "botanas",
        "limpieza",
        "frutas-verduras",
        "mascotas",
        "ferreteria",
        "farmacia",
        "refacciones",
        "comida"
      ],
      "type": "string",
      "description": "Categoría opcional."
    },
    "precio_max": {
      "type": "number",
      "description": "Precio máximo por pieza en MXN.",
      "exclusiveMinimum": 0
    },
    "codigo_postal": {
      "type": "string",
      "maxLength": 10,
      "description": "Código postal de entrega (5 dígitos), p. ej. '44600'."
    }
  }
}
buscar_productos annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
ver_producto — Ver producto
Advertised by the server during the last successful anonymous check.
Advertised read-only

Detalle de un producto de NAO: precio, stock, vendedor, imagen y condiciones de entrega.

ver_producto input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "producto_id"
  ],
  "properties": {
    "producto_id": {
      "type": "string",
      "maxLength": 90,
      "minLength": 2,
      "description": "id del producto (p-...) o su slug."
    }
  }
}
ver_producto annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
buscar_tienditas_cerca — Buscar negocios locales cerca
Advertised by the server during the last successful anonymous check.
Advertised read-only

Encuentra negocios locales en NAO (ferreterías, tlapalerías, refaccionarias, papelerías, farmacias, tienditas…) que entregan en una colonia o código postal de Guadalajara, ordenados por distancia. Cada uno entrega el mismo día con un repartidor de su propia colonia (2 km a la redonda, envío 25 MXN).

buscar_tienditas_cerca input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "texto": {
      "type": "string",
      "maxLength": 80,
      "description": "Filtro opcional por nombre."
    },
    "colonia": {
      "type": "string",
      "maxLength": 80,
      "description": "Colonia de entrega en Guadalajara, p. ej. 'Santa Tere', 'Americana', 'Chapalita'."
    },
    "codigo_postal": {
      "type": "string",
      "maxLength": 10,
      "description": "Código postal de entrega (5 dígitos), p. ej. '44600'."
    }
  }
}
buscar_tienditas_cerca annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
ver_tiendita — Ver negocio local
Advertised by the server during the last successful anonymous check.
Advertised read-only

Ficha de un negocio local o vendedor: horario, colonia, radio de entrega, repartidores de colonia y catálogo completo.

ver_tiendita input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "tiendita_id"
  ],
  "properties": {
    "tiendita_id": {
      "type": "string",
      "maxLength": 90,
      "minLength": 2,
      "description": "id (t-...) o slug del negocio local o vendedor."
    }
  }
}
ver_tiendita annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
crear_pedido — Crear pedido de prueba
Advertised by the server during the last successful anonymous check.
Advertised destructive

Cierra la compra: crea un pedido de PRUEBA en NAO (pago al recibir; en la demo no se cobra nada y nadie entrega). Manda 'productos' (ids de buscar_productos) o 'carrito' (el token de agregar_al_carrito). Entrega: colonia o código postal de Guadalajara; si la persona no dio ninguna, NO preguntes: NAO usa una entrega de demo en la colonia del negocio. No hace falta pedir nombre ni teléfono. Después comparte la liga 'seguimiento' y la de 'vista_del_negocio' (ahí se ve cómo le llega el pedido al negocio). Devuelve el id del pedido, su token (guárdalo: estado_pedido lo pide), el total en MXN, la liga de seguimiento y la liga al panel donde la persona ve lo que su bot compró. Usa 'comprador' para agrupar los pedidos de una misma persona en su panel. Manda 'clave_idempotencia' (p. ej. un UUID) para reintentar sin duplicar: con la misma clave y los mismos datos devuelve el mismo pedido.

crear_pedido input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "notas": {
      "type": "string",
      "maxLength": 500
    },
    "agente": {
      "type": "string",
      "maxLength": 60,
      "description": "Quién compra: 'Claude', 'ChatGPT', 'Grok', 'Muse', 'bot de mi empresa'…"
    },
    "recibe": {
      "type": "string",
      "maxLength": 60,
      "description": "Nombre de quien recibe (opcional)."
    },
    "carrito": {
      "type": "string",
      "maxLength": 3000,
      "description": "Token del carrito que devolvió agregar_al_carrito o ver_carrito (en vez de 'productos')."
    },
    "colonia": {
      "type": "string",
      "maxLength": 80,
      "description": "Colonia de entrega en Guadalajara, p. ej. 'Santa Tere', 'Americana', 'Chapalita'."
    },
    "telefono": {
      "type": "string",
      "maxLength": 20,
      "description": "Teléfono de quien recibe, 10 dígitos de México (opcional)."
    },
    "comprador": {
      "type": "string",
      "maxLength": 40,
      "description": "Código del panel de la persona (letras y números). Si no lo mandas, NAO le crea uno privado."
    },
    "productos": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "producto_id"
        ],
        "properties": {
          "cantidad": {
            "type": "integer",
            "maximum": 20,
            "minimum": 1
          },
          "producto_id": {
            "type": "string",
            "maxLength": 90,
            "minLength": 2
          }
        }
      },
      "maxItems": 20,
      "minItems": 1,
      "description": "Lista de {producto_id, cantidad}. Opcional si mandas 'carrito'."
    },
    "referencia": {
      "type": "string",
      "maxLength": 200,
      "description": "Referencia de entrega: calle, número, 'portón negro'."
    },
    "codigo_postal": {
      "type": "string",
      "maxLength": 10,
      "description": "Código postal de entrega (5 dígitos), p. ej. '44600'."
    },
    "clave_idempotencia": {
      "type": "string",
      "pattern": "^[A-Za-z0-9._:-]+$",
      "maxLength": 100,
      "minLength": 8,
      "description": "Clave única de este intento de compra (p. ej. un UUID). Si reintentas con la misma clave y los mismos datos, devuelve el mismo pedido en vez de crear otro."
    }
  }
}
crear_pedido annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": true
}
agregar_al_carrito — Agregar al carrito
Advertised by the server during the last successful anonymous check.
Advertised read-only

Agrega un producto al carrito de esta compra (o lo resta con cantidad negativa; en 0 se quita). La primera vez no mandes 'carrito'; después manda siempre el token 'carrito' que te devolvió la llamada anterior. Devuelve el carrito con total y envío. Para cerrar: crear_pedido con ese 'carrito'.

agregar_al_carrito input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "producto_id"
  ],
  "properties": {
    "carrito": {
      "type": "string",
      "maxLength": 3000,
      "description": "Token del carrito (c1.…) de la llamada anterior. Vacío = carrito nuevo."
    },
    "cantidad": {
      "type": "integer",
      "maximum": 20,
      "minimum": -20,
      "description": "Piezas a sumar (1 por omisión). Negativo resta."
    },
    "producto_id": {
      "type": "string",
      "maxLength": 90,
      "minLength": 2,
      "description": "id del producto (p-...) de buscar_productos."
    }
  }
}
agregar_al_carrito annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
ver_carrito — Ver carrito
Advertised by the server during the last successful anonymous check.
Advertised read-only

Muestra el carrito (productos, envío, total y la entrega de demo) a partir de su token. No compra nada: para pedir usa crear_pedido con el mismo 'carrito'.

ver_carrito input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "carrito": {
      "type": "string",
      "maxLength": 3000,
      "description": "Token del carrito (c1.…)."
    }
  }
}
ver_carrito annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
estado_pedido — Estado del pedido
Advertised by the server during the last successful anonymous check.
Advertised read-only

Consulta el estado de un pedido de NAO (recibido → preparando → en camino → entregado) y sus productos. Pide el id y el token que devolvió crear_pedido.

estado_pedido input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "pedido_id",
    "token"
  ],
  "properties": {
    "token": {
      "type": "string",
      "maxLength": 64,
      "minLength": 8,
      "description": "token del pedido que devolvió crear_pedido."
    },
    "pedido_id": {
      "type": "string",
      "maxLength": 20,
      "minLength": 4,
      "description": "id del pedido, p. ej. NAO-7K2Q9X."
    }
  }
}
estado_pedido annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

3 advertised

tarjeta-productos — NAO · productos

Advertised by the server during the last successful anonymous check.

Tarjetas de producto con foto, precio, negocio y botón Agregar.

tarjeta-productos URI
ui://nao/productos-v2.html

MIME type: text/html;profile=mcp-app

tarjeta-carrito — NAO · carrito

Advertised by the server during the last successful anonymous check.

Carrito con total, envío y botón para pedir.

tarjeta-carrito URI
ui://nao/carrito-v2.html

MIME type: text/html;profile=mcp-app

tarjeta-pedido — NAO · pedido

Advertised by the server during the last successful anonymous check.

Confirmación del pedido con su estado: recibido, preparando, en camino, entregado.

tarjeta-pedido URI
ui://nao/pedido-v2.html

MIME type: text/html;profile=mcp-app

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
962 ms
95th percentile latency
962 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 962 ms · metadata changed · 8 tool(s), 3 resource(s), 0 resource template(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http nao-mcp https://nao.hechq.com/api/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add nao-mcp --url https://nao.hechq.com/api/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable nao-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "nao-mcp": {
      "url": "https://nao.hechq.com/api/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "nao-mcp": {
      "type": "streamableHttp",
      "url": "https://nao.hechq.com/api/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start nao-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "nao-mcp": {
      "type": "http",
      "url": "https://nao.hechq.com/api/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http nao-mcp https://nao.hechq.com/api/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "nao-mcp": {
      "url": "https://nao.hechq.com/api/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "nao-mcp": {
      "serverUrl": "https://nao.hechq.com/api/mcp"
    }
  }
}

Let your agent find its tools

Find servers like NAO MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run NAO MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing